Merge remote-tracking branch 'origin/master' into vulkan2

This commit is contained in:
Rachael Alexanderson 2019-04-10 04:02:42 -04:00
commit 7b06fbe28e
41 changed files with 155 additions and 3801 deletions

View file

@ -210,13 +210,23 @@ void FGameConfigFile::DoAutoloadSetup (FIWadManager *iwad_man)
RenameSection("Freedoom2.Autoload", "doom.freedoom.phase2.Autoload");
RenameSection("Freedoom1.Autoload", "doom.freedoom.phase1.Autoload");
RenameSection("Freedoom.Autoload", "doom.freedoom.Autoload");
RenameSection("DoomBFG.Autoload", "doom.doom1.bfg.Autoload");
RenameSection("DoomU.Autoload", "doom.doom1.ultimate.Autoload");
RenameSection("Doom1.Autoload", "doom.doom1.registered.Autoload");
RenameSection("TNT.Autoload", "doom.doom2.tnt.Autoload");
RenameSection("Plutonia.Autoload", "doom.doom2.plutonia.Autoload");
RenameSection("Doom2BFG.Autoload", "doom.doom2.bfg.Autoload");
RenameSection("Doom2.Autoload", "doom.doom2.commercial.Autoload");
RenameSection("DoomBFG.Autoload", "doom.id.doom1.bfg.Autoload");
RenameSection("DoomU.Autoload", "doom.id.doom1.ultimate.Autoload");
RenameSection("Doom1.Autoload", "doom.id.doom1.registered.Autoload");
RenameSection("TNT.Autoload", "doom.id.doom2.tnt.Autoload");
RenameSection("Plutonia.Autoload", "doom.id.doom2.plutonia.Autoload");
RenameSection("Doom2BFG.Autoload", "doom.id.doom2.bfg.Autoload");
RenameSection("Doom2.Autoload", "doom.id.doom2.commercial.Autoload");
}
else if (last < 218)
{
RenameSection("doom.doom1.bfg.Autoload", "doom.id.doom1.bfg.Autoload");
RenameSection("doom.doom1.ultimate.Autoload", "doom.id.doom1.ultimate.Autoload");
RenameSection("doom.doom1.registered.Autoload", "doom.id.doom1.registered.Autoload");
RenameSection("doom.doom2.tnt.Autoload", "doom.id.doom2.tnt.Autoload");
RenameSection("doom.doom2.plutonia.Autoload", "doom.id.doom2.plutonia.Autoload");
RenameSection("doom.doom2.bfg.Autoload", "doom.id.doom2.bfg.Autoload");
RenameSection("doom.doom2.commercial.Autoload", "doom.id.doom2.commercial.Autoload");
}
const FString *pAuto;
for (int num = 0; (pAuto = iwad_man->GetAutoname(num)) != NULL; num++)

View file

@ -765,12 +765,30 @@ void FMapInfoParser::ParseCluster()
ParseAssign();
if (ParseLookupName(clusterinfo->EnterText))
clusterinfo->flags |= CLUSTER_LOOKUPENTERTEXT;
else
{
FStringf testlabel("CLUSTERENTER%d", clusterinfo->cluster);
if (GStrings.MatchDefaultString(testlabel, clusterinfo->EnterText))
{
clusterinfo->EnterText = testlabel;
clusterinfo->flags |= CLUSTER_LOOKUPENTERTEXT;
}
}
}
else if (sc.Compare("exittext"))
{
ParseAssign();
if (ParseLookupName(clusterinfo->ExitText))
clusterinfo->flags |= CLUSTER_LOOKUPEXITTEXT;
else
{
FStringf testlabel("CLUSTEREXIT%d", clusterinfo->cluster);
if (GStrings.MatchDefaultString(testlabel, clusterinfo->ExitText))
{
clusterinfo->ExitText = testlabel;
clusterinfo->flags |= CLUSTER_LOOKUPEXITTEXT;
}
}
}
else if (sc.Compare("music"))
{
@ -1933,8 +1951,8 @@ level_info_t *FMapInfoParser::ParseMapHeader(level_info_t &defaultinfo)
// Workaround to allow localizazion of IWADs which do not have a string label here (e.g. HACX.WAD)
// This checks for a string labelled with the MapName and if that is identical to what got parsed here
// the string table entry will be used.
auto c = GStrings.GetLanguageString(levelinfo->MapName, FStringTable::default_table);
if (c && !strcmp(c, sc.String))
if (GStrings.MatchDefaultString(levelinfo->MapName, sc.String))
{
levelinfo->flags |= LEVEL_LOOKUPLEVELNAME;
levelinfo->LevelName = levelinfo->MapName;

View file

@ -367,6 +367,7 @@ void FResourceFile::PostProcessArchive(void *lumps, size_t lumpsize)
{
// Entries in archives are sorted alphabetically
qsort(lumps, NumLumps, lumpsize, lumpcmp);
// Filter out lumps using the same names as the Autoload.* sections
// in the ini file use. We reduce the maximum lump concidered after
@ -406,7 +407,17 @@ int FResourceFile::FilterLumps(FString filtername, void *lumps, size_t lumpsize,
return 0;
}
filter << "filter/" << filtername << '/';
if (FindPrefixRange(filter, lumps, lumpsize, max, start, end))
bool found = FindPrefixRange(filter, lumps, lumpsize, max, start, end);
// Workaround for old Doom filter names.
if (!found && filtername.IndexOf("doom.id.doom") == 0)
{
filter.Substitute("doom.id.doom", "doom.doom");
found = FindPrefixRange(filter, lumps, lumpsize, max, start, end);
}
if (found)
{
void *from = (uint8_t *)lumps + start * lumpsize;

View file

@ -250,6 +250,10 @@ bool FStringTable::ParseLanguageCSV(const TArray<uint8_t> &buffer)
{
InsertString(langentry.second, strName, str);
}
else
{
DeleteString(langentry.second, strName);
}
}
}
}
@ -372,6 +376,17 @@ void FStringTable::LoadLanguage (const TArray<uint8_t> &buffer)
//
//==========================================================================
void FStringTable::DeleteString(int langid, FName label)
{
allStrings[langid].Remove(label);
}
//==========================================================================
//
//
//
//==========================================================================
void FStringTable::InsertString(int langid, FName label, const FString &string)
{
const char *strlangid = (const char *)&langid;
@ -386,7 +401,7 @@ void FStringTable::InsertString(int langid, FName label, const FString &string)
break;
}
FString macroname(te.strings[0].GetChars() + index + 2, endindex - index - 2);
FStringf lookupstr("%s/%s", strlangid, macroname.GetChars());
FStringf lookupstr("%s/%s", strlangid, macroname.GetChars());
FStringf replacee("@[%s]", macroname.GetChars());
FName lookupname(lookupstr, true);
auto replace = allMacros.CheckKey(lookupname);
@ -550,6 +565,20 @@ const char *FStringTable::GetLanguageString(const char *name, uint32_t langtable
return nullptr;
}
bool FStringTable::MatchDefaultString(const char *name, const char *content) const
{
// This only compares the first line to avoid problems with bad linefeeds. For the few cases where this feature is needed it is sufficient.
auto c = GetLanguageString(name, FStringTable::default_table);
if (!c) return false;
// Check a secondary key, in case the text comparison cannot be done due to needed orthographic fixes (see Harmony's exit text)
FStringf checkkey("%s_CHECK", name);
auto cc = GetLanguageString(checkkey, FStringTable::default_table);
if (cc) c = cc;
return (c && !strnicmp(c, content, strcspn(content, "\n\r\t")));
}
//==========================================================================
//
// Finds a string by name and returns its value. If the string does

View file

@ -89,6 +89,7 @@ public:
}
const char *GetLanguageString(const char *name, uint32_t langtable, int gender = -1) const;
bool MatchDefaultString(const char *name, const char *content) const;
const char *GetString(const char *name, uint32_t *langtable, int gender = -1) const;
const char *operator() (const char *name) const; // Never returns NULL
const char *operator[] (const char *name) const
@ -110,6 +111,7 @@ private:
bool LoadLanguageFromSpreadsheet(int lumpnum, const TArray<uint8_t> &buffer);
bool readMacros(int lumpnum);
void InsertString(int langid, FName label, const FString &string);
void DeleteString(int langid, FName label);
static size_t ProcessEscapes (char *str);
};

View file

@ -130,6 +130,9 @@ void HU_SortPlayers
*/
bool SB_ForceActive = false;
static FFont *displayFont;
static int FontScale;
// PRIVATE DATA DEFINITIONS ------------------------------------------------
@ -143,6 +146,9 @@ bool SB_ForceActive = false;
void HU_DrawScores (player_t *player)
{
displayFont = NewSmallFont;
FontScale = MAX(screen->GetHeight() / 400, 1);
if (deathmatch)
{
if (teamplay)
@ -195,7 +201,7 @@ void HU_DrawScores (player_t *player)
void HU_GetPlayerWidths(int &maxnamewidth, int &maxscorewidth, int &maxiconheight)
{
maxnamewidth = SmallFont->StringWidth("Name");
maxnamewidth = displayFont->StringWidth("Name");
maxscorewidth = 0;
maxiconheight = 0;
@ -203,7 +209,7 @@ void HU_GetPlayerWidths(int &maxnamewidth, int &maxscorewidth, int &maxiconheigh
{
if (playeringame[i])
{
int width = SmallFont->StringWidth(players[i].userinfo.GetName());
int width = displayFont->StringWidth(players[i].userinfo.GetName());
if (width > maxnamewidth)
{
maxnamewidth = width;
@ -235,6 +241,11 @@ void HU_GetPlayerWidths(int &maxnamewidth, int &maxscorewidth, int &maxiconheigh
//
//==========================================================================
static void HU_DrawFontScaled(double x, double y, int color, const char *text)
{
screen->DrawText(displayFont, color, x / FontScale, y / FontScale, text, DTA_VirtualWidth, screen->GetWidth() / FontScale, DTA_VirtualHeight, screen->GetHeight() / FontScale, TAG_END);
}
static void HU_DoDrawScores (player_t *player, player_t *sortedplayers[MAXPLAYERS])
{
int color;
@ -258,7 +269,7 @@ static void HU_DoDrawScores (player_t *player, player_t *sortedplayers[MAXPLAYER
}
HU_GetPlayerWidths(maxnamewidth, maxscorewidth, maxiconheight);
height = SmallFont->GetHeight() * CleanYfac;
height = displayFont->GetHeight() * FontScale;
lineheight = MAX(height, maxiconheight * CleanYfac);
ypadding = (lineheight - height + 1) / 2;
@ -327,23 +338,16 @@ static void HU_DoDrawScores (player_t *player, player_t *sortedplayers[MAXPLAYER
*text_name = GStrings("SCORE_NAME"),
*text_delay = GStrings("SCORE_DELAY");
col2 = (SmallFont->StringWidth(text_color) + 8) * CleanXfac;
col3 = col2 + (SmallFont->StringWidth(text_frags) + 8) * CleanXfac;
col4 = col3 + maxscorewidth * CleanXfac;
col5 = col4 + (maxnamewidth + 8) * CleanXfac;
x = (SCREENWIDTH >> 1) - (((SmallFont->StringWidth(text_delay) * CleanXfac) + col5) >> 1);
col2 = (displayFont->StringWidth(text_color) + 16) * FontScale;
col3 = col2 + (displayFont->StringWidth(text_frags) + 16) * FontScale;
col4 = col3 + maxscorewidth * FontScale;
col5 = col4 + (maxnamewidth + 16) * FontScale;
x = (SCREENWIDTH >> 1) - (((displayFont->StringWidth(text_delay) * FontScale) + col5) >> 1);
screen->DrawText (SmallFont, color, x, y, text_color,
DTA_CleanNoMove, true, TAG_DONE);
screen->DrawText (SmallFont, color, x + col2, y, text_frags,
DTA_CleanNoMove, true, TAG_DONE);
screen->DrawText (SmallFont, color, x + col4, y, text_name,
DTA_CleanNoMove, true, TAG_DONE);
screen->DrawText(SmallFont, color, x + col5, y, text_delay,
DTA_CleanNoMove, true, TAG_DONE);
//HU_DrawFontScaled(x, y, color, text_color);
HU_DrawFontScaled(x + col2, y, color, text_frags);
HU_DrawFontScaled(x + col4, y, color, text_name);
HU_DrawFontScaled(x + col5, y, color, text_delay);
y += height + 6 * CleanYfac;
bottom -= height;
@ -385,9 +389,8 @@ static void HU_DrawTimeRemaining (int y)
mysnprintf (str, countof(str), "Level ends in %d:%02d:%02d", hours, minutes, seconds);
else
mysnprintf (str, countof(str), "Level ends in %d:%02d", minutes, seconds);
screen->DrawText (SmallFont, CR_GREY, SCREENWIDTH/2 - SmallFont->StringWidth (str)/2*CleanXfac,
y, str, DTA_CleanNoMove, true, TAG_DONE);
HU_DrawFontScaled(SCREENWIDTH / 2 - displayFont->StringWidth(str) / 2 * FontScale, y, CR_GRAY, str);
}
}
@ -407,7 +410,7 @@ static void HU_DrawPlayer (player_t *player, bool highlight, int col1, int col2,
// The teamplay mode uses colors to show teams, so we need some
// other way to do highlighting. And it may as well be used for
// all modes for the sake of consistancy.
screen->Dim(MAKERGB(200,245,255), 0.125f, col1 - 12*CleanXfac, y - 1, col5 + (maxnamewidth + 24)*CleanXfac, height + 2);
screen->Dim(MAKERGB(200,245,255), 0.125f, col1 - 12*FontScale, y - 1, col5 + (maxnamewidth + 24)*FontScale, height + 2);
}
col2 += col1;
@ -419,8 +422,7 @@ static void HU_DrawPlayer (player_t *player, bool highlight, int col1, int col2,
HU_DrawColorBar(col1, y, height, (int)(player - players));
mysnprintf (str, countof(str), "%d", deathmatch ? player->fragcount : player->killcount);
screen->DrawText (SmallFont, color, col2, y + ypadding, player->playerstate == PST_DEAD && !deathmatch ? "DEAD" : str,
DTA_CleanNoMove, true, TAG_DONE);
HU_DrawFontScaled(col2, y + ypadding, color, player->playerstate == PST_DEAD && !deathmatch ? "DEAD" : str);
auto icon = FSetTextureID(player->mo->IntVar(NAME_ScoreIcon));
if (icon.isValid())
@ -431,8 +433,7 @@ static void HU_DrawPlayer (player_t *player, bool highlight, int col1, int col2,
TAG_DONE);
}
screen->DrawText (SmallFont, color, col4, y + ypadding, player->userinfo.GetName(),
DTA_CleanNoMove, true, TAG_DONE);
HU_DrawFontScaled(col4, y + ypadding, color, player->userinfo.GetName());
int avgdelay = 0;
for (int i = 0; i < BACKUPTICS; i++)
@ -443,8 +444,7 @@ static void HU_DrawPlayer (player_t *player, bool highlight, int col1, int col2,
mysnprintf(str, countof(str), "%d", (avgdelay * ticdup) * (1000 / TICRATE));
screen->DrawText(SmallFont, color, col5, y + ypadding, str,
DTA_CleanNoMove, true, TAG_DONE);
HU_DrawFontScaled(col5, y + ypadding, color, str);
if (teamplay && Teams[player->userinfo.GetTeam()].GetLogo().IsNotEmpty ())
{
@ -467,7 +467,10 @@ void HU_DrawColorBar(int x, int y, int height, int playernum)
D_GetPlayerColor (playernum, &h, &s, &v, NULL);
HSVtoRGB (&r, &g, &b, h, s, v);
screen->Clear (x, y, x + 24*CleanXfac, y + height, -1,
//float aspect = ActiveRatio(SCREENWIDTH, SCREENHEIGHT);
//if (!AspectTallerThanWide(aspect)) x += (screen->GetWidth() - AspectBaseWidth(aspect)) / 2;
screen->Clear (x, y, x + 24*FontScale, y + height, -1,
MAKEARGB(255,clamp(int(r*255.f),0,255),
clamp(int(g*255.f),0,255),
clamp(int(b*255.f),0,255)));

View file

@ -65,7 +65,7 @@ const char *GetVersionString();
// Version stored in the ini's [LastRun] section.
// Bump it if you made some configuration change that you want to
// be able to migrate in FGameConfigFile::DoGlobalSetup().
#define LASTRUNVERSION "217"
#define LASTRUNVERSION "218"
// Protocol version used in demos.
// Bump it if you change existing DEM_ commands or add new ones.

View file

@ -1,162 +0,0 @@
BAR1A0, 10, 32, iwad
BAR1B0, 10, 32, iwad
BEXPA0, 10, 32, iwad
BEXPB0, 10, 31, iwad
BEXPC0, 19, 36, iwad
BEXPD0, 27, 49, iwad
BEXPE0, 29, 52, iwad
BOS2I0, 20, 71, iwad
BOS2J0, 26, 62, iwad
BOS2K0, 26, 52, iwad
BOS2L0, 29, 33, iwad
BOS2M0, 30, 29, iwad
BOS2N0, 30, 29, iwad
BOS2O0, 30, 29, iwad
BOSSI0, 20, 72, iwad
BOSSJ0, 26, 63, iwad
BOSSK0, 26, 51, iwad
BOSSL0, 29, 33, iwad
BOSSM0, 30, 29, iwad
BOSSN0, 30, 29, iwad
BOSSO0, 30, 29, iwad
BRS1A0, 13, 8, iwad
BSPIJ0, 50, 54, iwad
BSPIK0, 50, 57, iwad
BSPIL0, 47, 52, iwad
BSPIM0, 45, 44, iwad
BSPIN0, 45, 42, iwad
BSPIO0, 45, 30, iwad
BSPIP0, 45, 28, iwad
CBRAA0, 15, 60, iwad
CEYEA0, 21, 59, iwad
CEYEB0, 21, 58, iwad
CEYEC0, 21, 59, iwad
COL1A0, 16, 51, iwad
COL2A0, 16, 39, iwad
COL3A0, 16, 52, iwad
COL4A0, 17, 39, iwad
COL5A0, 16, 44, iwad
COL5B0, 16, 45, iwad
COL6A0, 17, 47, iwad
COLUA0, 9, 45, iwad
CPOSH0, 20, 61, iwad
CPOSI0, 23, 64, iwad
CPOSJ0, 28, 59, iwad
CPOSK0, 30, 48, iwad
CPOSL0, 31, 34, iwad
CPOSM0, 32, 22, iwad
CPOSN0, 32, 18, iwad
CPOSO0, 26, 59, iwad
CPOSP0, 28, 59, iwad
CPOSQ0, 30, 48, iwad
CPOSR0, 32, 40, iwad
CPOSS0, 32, 31, iwad
CPOST0, 32, 19, iwad
CYBRH0, 60, 108, iwad
CYBRI0, 55, 110, iwad
CYBRJ0, 49, 113, iwad
CYBRK0, 56, 114, iwad
CYBRL0, 62, 121, iwad
CYBRM0, 67, 128, iwad
CYBRN0, 70, 132, iwad
CYBRO0, 69, 132, iwad
CYBRP0, 60, 28, iwad
ELECA0, 19, 125, iwad
FATTO0, 35, 43, iwad
FATTP0, 36, 41, iwad
FATTQ0, 36, 40, iwad
FATTR0, 36, 40, iwad
FATTS0, 36, 40, iwad
FATTT0, 36, 39, iwad
FCANA0, 19, 52, iwad
FCANB0, 19, 52, iwad
FCANC0, 19, 50, iwad
PLAYH0, 16, 50, iwad
PLAYI0, 11, 42, iwad
PLAYJ0, 12, 45, iwad
PLAYK0, 17, 37, iwad
PLAYL0, 27, 14, iwad
PLAYM0, 27, 14, iwad
PLAYN0, 27, 14, iwad
POB1A0, 16, 6, iwad
POB2A0, 14, 3, iwad
POL1A0, 22, 65, iwad
POL2A0, 19, 66, iwad
POL3A0, 19, 42, iwad
POL3B0, 19, 42, iwad
POL4A0, 19, 55, iwad
POL5A0, 27, 8, iwad
POL6A0, 17, 65, iwad
POL6B0, 19, 65, iwad
POSSH0, 19, 55, iwad
POSSL0, 22, 14, iwad
SARGI0, 25, 56, iwad
SARGM0, 33, 43, iwad
SARGN0, 33, 29, iwad
SKELM0, 27, 78, iwad
SKELN0, 38, 69, iwad
SKELO0, 28, 55, iwad
SKELP0, 28, 35, iwad
SKELQ0, 40, 20, iwad
SMITA0, 22, 44, iwad
SPIDJ0, 79, 102, iwad
SPIDK0, 95, 95, iwad
SPIDL0, 94, 88, iwad
SPIDM0, 94, 76, iwad
SPIDN0, 98, 71, iwad
SPIDO0, 101, 68, iwad
SPIDP0, 104, 85, iwad
SPIDQ0, 109, 90, iwad
SPIDR0, 110, 111, iwad
SPIDS0, 98, 35, iwad
SPOSH0, 14, 60, iwad
SPOSL0, 24, 15, iwad
SSWVI0, 18, 54, iwad
SSWVJ0, 15, 44, iwad
SSWVK0, 15, 40, iwad
SSWVL0, 15, 25, iwad
SSWVM0, 24, 13, iwad
SSWVN0, 15, 57, iwad
SSWVO0, 22, 59, iwad
SSWVP0, 25, 58, iwad
TBLUA0, 14, 94, iwad
TBLUB0, 14, 94, iwad
TBLUC0, 14, 94, iwad
TBLUD0, 14, 95, iwad
TGRNA0, 14, 94, iwad
TGRNB0, 14, 89, iwad
TGRNC0, 14, 89, iwad
TGRND0, 14, 95, iwad
TLMPA0, 11, 78, iwad
TLMPB0, 11, 78, iwad
TLMPC0, 11, 78, iwad
TLMPD0, 11, 78, iwad
TLP2A0, 10, 58, iwad
TLP2B0, 10, 58, iwad
TLP2C0, 10, 58, iwad
TLP2D0, 10, 58, iwad
TRE1A0, 25, 67, iwad
TREDA0, 14, 94, iwad
TREDB0, 14, 89, iwad
TREDC0, 14, 89, iwad
TREDD0, 14, 95, iwad
TROOI0, 22, 62, iwad
TROOJ0, 21, 59, iwad
TROOM0, 29, 20, iwad
TROON0, 24, 59, iwad
TROOO0, 20, 61, iwad
TROOP0, 24, 61, iwad
TROOQ0, 24, 61, iwad
TROOR0, 24, 44, iwad
TROOS0, 27, 34, iwad
TROOT0, 27, 31, iwad
TROOU0, 27, 18, iwad
VILER0, 18, 80, iwad
VILES0, 23, 76, iwad
VILET0, 27, 69, iwad
VILEU0, 35, 56, iwad
VILEV0, 34, 45, iwad
VILEW0, 34, 35, iwad
VILEX0, 34, 23, iwad
VILEY0, 34, 20, iwad
VILEZ0, 34, 20, iwad

View file

@ -307,7 +307,7 @@ IWad
IWad
{
Name = "DOOM: BFG Edition"
Autoname = "doom.doom1.bfg"
Autoname = "doom.id.doom1.bfg"
Game = "Doom"
Config = "Doom"
IWADName = "doom.wad", 2
@ -324,7 +324,7 @@ IWad
IWad
{
Name = "DOOM: Complete: WadSmoosh"
Autoname = "doom.doom2.wadsmoosh"
Autoname = "doom.id.doom2.wadsmoosh"
Game = "Doom"
Config = "Doom"
Mapinfo = "mapinfo/doom2.txt"
@ -337,7 +337,7 @@ IWad
IWad
{
Name = "The Ultimate DOOM"
Autoname = "doom.doom1.ultimate"
Autoname = "doom.id.doom1.ultimate"
Game = "Doom"
Config = "Doom"
IWADName = "doom.wad"
@ -353,7 +353,7 @@ IWad
IWad
{
Name = "DOOM Registered"
Autoname = "doom.doom1.registered"
Autoname = "doom.id.doom1.registered"
Game = "Doom"
Config = "Doom"
IWADName = "doom.wad", 1
@ -381,7 +381,7 @@ IWad
IWad
{
Name = "Final Doom: TNT - Evilution"
Autoname = "doom.doom2.tnt"
Autoname = "doom.id.doom2.tnt"
Game = "Doom"
Config = "Doom"
IWADName = "tnt.wad"
@ -395,7 +395,7 @@ IWad
IWad
{
Name = "Final Doom: Plutonia Experiment"
Autoname = "doom.doom2.plutonia"
Autoname = "doom.id.doom2.plutonia"
Game = "Doom"
Config = "Doom"
IWADName = "plutonia.wad"
@ -409,7 +409,7 @@ IWad
IWad
{
Name = "DOOM 2: BFG Edition"
Autoname = "doom.doom2.bfg"
Autoname = "doom.id.doom2.bfg"
Game = "Doom"
Config = "Doom"
IWADName = "doom2.wad"
@ -425,7 +425,7 @@ IWad
IWad
{
Name = "DOOM 2: Hell on Earth"
Autoname = "doom.doom2.commercial"
Autoname = "doom.id.doom2.commercial"
Game = "Doom"
Config = "Doom"
IWADName = "doom2.wad", 1

View file

@ -41,7 +41,7 @@ class os_SearchField : OptionMenuItemTextField
override String Represent()
{
return mEnter
? mEnter.GetText() .. SmallFont.GetCursor()
? mEnter.GetText() .. NewSmallFont.GetCursor()
: mText;
}

View file

@ -20,7 +20,7 @@ class CoopStatusScreen : StatusScreen
acceleratestage = 0;
ng_state = 1;
displayFont = NewSmallFont;
FontScale = max(screen.GetHeight() / 480, 1);
FontScale = max(screen.GetHeight() / 400, 1);
RowHeight = int(max((displayFont.GetHeight() + 1) * FontScale, 1));
cnt_pause = Thinker.TICRATE;

View file

@ -2,6 +2,9 @@
class DeathmatchStatusScreen : StatusScreen
{
int textcolor;
double FontScale;
int RowHeight;
Font displayFont;
//====================================================================
//
@ -13,10 +16,14 @@ class DeathmatchStatusScreen : StatusScreen
{
int i, j;
textcolor = (gameinfo.gametype & GAME_Raven) ? Font.CR_GREEN : Font.CR_UNTRANSLATED;
textcolor = Font.CR_GRAY;
CurState = StatCount;
acceleratestage = 0;
displayFont = NewSmallFont;
FontScale = max(screen.GetHeight() / 400, 1);
RowHeight = max((displayFont.GetHeight() + 1) * FontScale, 1);
for(i = 0; i < MAXPLAYERS; i++)
{
playerready[i] = false;
@ -160,7 +167,7 @@ class DeathmatchStatusScreen : StatusScreen
Vector2 readyoffset = TexMan.GetScaledOffset(readyico);
height = int(readysize.Y - readyoffset.Y);
maxiconheight = MAX(height, maxiconheight);
height = SmallFont.GetHeight() * CleanYfac;
height = displayFont.GetHeight() * FontScale;
lineheight = MAX(height, maxiconheight * CleanYfac);
ypadding = (lineheight - height + 1) / 2;
y += CleanYfac;
@ -169,22 +176,22 @@ class DeathmatchStatusScreen : StatusScreen
//text_color = Stringtable.Localize("$SCORE_COLOR");
text_frags = Stringtable.Localize("$SCORE_FRAGS");
icon_x = 8 * CleanXfac;
name_x = icon_x + maxscorewidth * CleanXfac;
frags_x = name_x + (maxnamewidth + MAX(SmallFont.StringWidth("XXXXX"), SmallFont.StringWidth(text_frags)) + 8) * CleanXfac;
deaths_x = frags_x + ((deaths_len = SmallFont.StringWidth(text_deaths)) + 8) * CleanXfac;
icon_x = 8 * FontScale;
name_x = icon_x + maxscorewidth * FontScale;
frags_x = name_x + (maxnamewidth + 1 + MAX(displayFont.StringWidth("XXXXXXXXXX"), displayFont.StringWidth(text_frags)) + 16) * FontScale;
deaths_x = frags_x + ((deaths_len = displayFont.StringWidth(text_deaths)) + 16) * FontScale;
x = (Screen.GetWidth() - deaths_x) >> 1;
icon_x += x;
name_x += x;
frags_x += x;
deaths_x += x;
screen.DrawText(SmallFont, textcolor, name_x, y, Stringtable.Localize("$SCORE_NAME"), DTA_CleanNoMove, true);
screen.DrawText(SmallFont, textcolor, frags_x - SmallFont.StringWidth(text_frags) * CleanXfac, y, text_frags, DTA_CleanNoMove, true);
screen.DrawText(SmallFont, textcolor, deaths_x - deaths_len * CleanXfac, y, text_deaths, DTA_CleanNoMove, true);
y += height + 6 * CleanYfac;
drawTextScaled(displayFont, name_x, y, Stringtable.Localize("$SCORE_NAME"), FontScale, textcolor);
drawTextScaled(displayFont, frags_x - displayFont.StringWidth(text_frags) * FontScale, y, text_frags, FontScale, textcolor);
drawTextScaled(displayFont, deaths_x - deaths_len * FontScale, y, text_deaths, FontScale, textcolor);
y += height + 6 * FontScale;
// Sort all players
Array<int> sortedplayers;
GetSortedPlayers(sortedplayers, teamplay);
@ -208,22 +215,25 @@ class DeathmatchStatusScreen : StatusScreen
{
screen.DrawTexture(player.mo.ScoreIcon, true, icon_x, y, DTA_CleanNoMove, true);
}
screen.DrawText(SmallFont, thiscolor, name_x, y + ypadding, player.GetUserName(), DTA_CleanNoMove, true);
drawNum(SmallFont, frags_x, y + ypadding, cnt_frags[pnum], 0, false, thiscolor, true);
drawTextScaled(displayFont, name_x, y + ypadding, player.GetUserName(), FontScale, thiscolor);
drawNumScaled(displayFont, frags_x, y + ypadding, FontScale, cnt_frags[pnum], 0, textcolor);
if (ng_state >= 2)
{
drawNum(SmallFont, deaths_x, y + ypadding, cnt_deaths[pnum], 0, false, thiscolor, true);
drawNumScaled(displayFont, deaths_x, y + ypadding, FontScale, cnt_deaths[pnum], 0, textcolor);
}
y += lineheight + CleanYfac;
}
// Draw "TOTAL" line
y += height + 3 * CleanYfac;
screen.DrawText(SmallFont, textcolor, name_x, y, Stringtable.Localize("$SCORE_TOTAL"), DTA_CleanNoMove, true);
drawNum(SmallFont, frags_x, y, total_frags, 0, false, textcolor, true);
drawTextScaled(displayFont, name_x, y, Stringtable.Localize("$SCORE_TOTAL"), FontScale, textcolor);
drawNumScaled(displayFont, frags_x, y, FontScale, total_frags, 0, textcolor);
if (ng_state >= 4)
{
drawNum(SmallFont, deaths_x, y, total_deaths, 0, false, textcolor, true);
drawNumScaled(displayFont, deaths_x, y, FontScale, total_deaths, 0, textcolor);
}
// Draw game time
@ -235,7 +245,6 @@ class DeathmatchStatusScreen : StatusScreen
seconds = seconds % 60;
String leveltime = Stringtable.Localize("$SCORE_LVLTIME") .. ": " .. String.Format("%02i:%02i:%02i", hours, minutes, seconds);
screen.DrawText(SmallFont, textcolor, x, y, leveltime, DTA_CleanNoMove, true);
drawTextScaled(displayFont, x, y, leveltime, FontScale, textcolor);
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff