- removed the multiplayer scoreboard screens.

Since there is no plan to keep them in case MP gets implemented there's no need to maintain them.
These should later be replaced by a generic screen using a better font and a layout that takes higher resolutions into account.
This commit is contained in:
Christoph Oelckers 2021-05-27 00:32:57 +02:00
parent fd97da05b7
commit d44500863b
12 changed files with 46 additions and 265 deletions

View file

@ -354,6 +354,8 @@ int getAlternative(int code)
default:
return code;
case '{': return '(';
case '}': return ')';
case 0x17f: return 's'; // The 'long s' can be safely remapped to the regular variant, not that this gets used in any real text...
case 0x218: return 0x15e; // Romanian S with comma below may get remapped to S with cedilla.
case 0x219: return 0x15f;

View file

@ -82,6 +82,9 @@ CVAR(Bool, autoloadlights, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
CVAR(Bool, autoloadbrightmaps, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
CVAR(Bool, autoloadwidescreen, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
// Note: For the automap label there is a separate option "am_textfont".
CVARD(Bool, hud_textfont, false, CVAR_ARCHIVE, "Use the regular text font as replacement for the tiny 3x5 font for HUD messages whenever possible")
EXTERN_CVAR(Bool, ui_generic)
CUSTOM_CVAR(String, language, "auto", CVAR_ARCHIVE | CVAR_NOINITCALL | CVAR_GLOBALCONFIG)

View file

@ -12,6 +12,8 @@
#include "i_time.h"
#include "palentry.h"
EXTERN_CVAR(Bool, hud_textfont)
extern bool sendsave;
extern FString savedescription;
extern FString savegamefile;

View file

@ -32,8 +32,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
BEGIN_SW_NS
void MNU_DrawSmallString(int x, int y, const char* string, int shade, int pal, int align = -1, double alpha = 1);
END_SW_NS
#endif

View file

@ -74,15 +74,6 @@ static void UpdateFrame(void)
//
//---------------------------------------------------------------------------
void DrawConString(int x, int y, const char* string, double alpha)
{
x = x * 2 - SmallFont->StringWidth(string) / 2;
y *= 2;
DrawText(twod, SmallFont, CR_TAN, x, y, string, DTA_FullscreenScale, FSMode_Fit640x400, DTA_Alpha, alpha, TAG_DONE);
}
void UpdateStatusBar()
{
if (hud_size <= Hud_Stbar)
@ -105,13 +96,23 @@ void UpdateStatusBar()
{
const int MESSAGE_LINE = 142; // Used to be 164
if (!SmallFont2->CanPrint(pp->cookieQuote))
DrawConString(160, MESSAGE_LINE, pp->cookieQuote, clamp(pp->cookieTime / 60., 0., 1.));
if (hud_textfont || !SmallFont2->CanPrint(pp->cookieQuote))
{
int x = 320 - SmallFont->StringWidth(pp->cookieQuote) / 2;
DrawText(twod, SmallFont, CR_UNDEFINED, x, MESSAGE_LINE*2, pp->cookieQuote, DTA_FullscreenScale, FSMode_Fit640x400,
DTA_Alpha, clamp(pp->cookieTime / 60., 0., 1.), TAG_DONE);
}
else
MNU_DrawSmallString(160, MESSAGE_LINE, pp->cookieQuote, 0, 0, 0, clamp(pp->cookieTime / 60., 0., 1.));
{
int x = 160 - SmallFont2->StringWidth(pp->cookieQuote) / 2;
DrawText(twod, SmallFont2, CR_UNDEFINED, x, MESSAGE_LINE, pp->cookieQuote, DTA_FullscreenScale, FSMode_Fit320x200,
DTA_Alpha, clamp(pp->cookieTime / 60., 0., 1.), TAG_DONE);
}
}
}
END_SW_NS

View file

@ -102,25 +102,6 @@ void InitFonts()
BigFont->SetKerning(1);
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
void MNU_DrawSmallString(int x, int y, const char* string, int shade, int pal, int align, double alpha)
{
if (align > -1)
{
int w = SmallFont2->StringWidth(string);
if (align == 0) x -= w / 2;
else x -= w;
}
DrawText(twod, SmallFont2, CR_UNDEFINED, x, y, string, DTA_FullscreenScale, FSMode_Fit320x200,
DTA_Color, shadeToLight(shade), DTA_TranslationIndex, TRANSLATION(Translation_Remap, pal), DTA_Alpha, alpha, TAG_DONE);
}
//---------------------------------------------------------------------------
//
// Notification messages. Native SW-style display should later be

View file

@ -123,6 +123,20 @@ struct BloodScreen
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
static void DrawLocalizedText(int x, int y, String text, int position = 1)
{
let text = StringTable.Localize(text);
if (hud_textfont || !SmallFont2.CanPrint(text))
DrawText(SmallFont, text, x, y, 1);
else
DrawText(SmallFont2, text, x, y, 1, shadow: true);
}
}
//---------------------------------------------------------------------------
@ -184,9 +198,7 @@ class BloodSummaryScreen : SummaryScreenBase
BloodScreen.DrawCaption("$TXTB_LEVELSTATS", 0, true);
if (stats.cheated)
{
let text = StringTable.Localize("$TXTB_CHEATED");
let font = SmallFont2.CanPrint(text)? SmallFont2 : SmallFont;
BloodScreen.DrawText(font, text, 160, 32, 1, shadow:font == SmallFont2);
BloodScreen.DrawLocalizedText(160, 32, "$TXTB_CHEATED");
}
DrawKills();
DrawSecrets();
@ -194,9 +206,7 @@ class BloodSummaryScreen : SummaryScreenBase
int myclock = ticks * 120 / GameTicRate;
if ((myclock & 32))
{
let text = StringTable.Localize("$PRESSKEY");
let font = SmallFont2.CanPrint(text)? SmallFont2 : SmallFont;
BloodScreen.DrawText(font, text, 160, 134, 1, shadow:font == SmallFont2);
BloodScreen.DrawLocalizedText(160, 134, "$PRESSKEY");
}
}
@ -227,37 +237,10 @@ class BloodMPSummaryScreen : SkippableScreenJob
Blood.sndStartSample(268, 128, -1, false, CHANF_UI);
}
void DrawKills()
{
String pBuffer;
BloodScreen.DrawText(SmallFont2, "#", 85, 35);
BloodScreen.DrawText(SmallFont2, "$NAME", 100, 35);
BloodScreen.DrawText(SmallFont2, "$FRAGS", 210, 35);
for (int i = 0; i < numplayers; i++)
{
pBuffer = String.Format( "%-2d", i);
BloodScreen.DrawText(SmallFont2, pBuffer, 85, 50 + 8 * i);
pBuffer = String.Format( "%s", Raze.PlayerName(i));
BloodScreen.DrawText(SmallFont2, pBuffer, 100, 50 + 8 * i);
pBuffer = String.Format( "%d", Raze.playerFrags(i, -1));
BloodScreen.DrawText(SmallFont2, pBuffer, 210, 50 + 8 * i);
}
}
override void Draw(double sr)
{
BloodScreen.DrawBackground();
BloodScreen.DrawCaption("$TXTB_FRAGSTATS", 0, true);
DrawKills();
int myclock = ticks * 120 / GameTicRate;
if ((myclock & 32))
{
let text = StringTable.Localize("$PRESSKEY");
let font = SmallFont2.CanPrint(text)? SmallFont2 : SmallFont;
BloodScreen.DrawText(font, text, 160, 134, 1, shadow:font == SmallFont2);
}
Raze.DrawScoreboard(60);
}
}
@ -293,10 +276,7 @@ class BloodLoadScreen : ScreenJob
BloodScreen.DrawBackground();
BloodScreen.DrawCaption(loadtext, 0, true);
BloodScreen.DrawText(BigFont, rec.DisplayName(), 160, 50, 1);
let text = StringTable.Localize("$TXTB_PLSWAIT");
let font = SmallFont2.CanPrint(text)? SmallFont2 : SmallFont;
BloodScreen.DrawText(font, text, 160, 134, 1, shadow:font == SmallFont2);
BloodScreen.DrawLocalizedText(160, 134, "$TXTB_PLSWAIT");
}
}

View file

@ -110,21 +110,6 @@ struct Duke native
if (align != -1) x -= SmallFont.StringWidth(t) * (align == 0 ? 0.5 : 1);
Screen.DrawText(SmallFont, Font.CR_UNDEFINED, x, y + 2, t, DTA_FullscreenScale, fsmode, DTA_TranslationIndex, Translation.MakeID(Translation_Remap, trans), DTA_Color, Raze.shadeToLight(shade));
}
static void MiniText(double x, double y, String t, int shade, int align = -1, int trans = 0)
{
int fsmode = FSMode_Fit320x200;
if (Raze.isRR())
{
x *= 2;
y *= 2;
fsmode = FSMode_Fit640x400;
}
if (align != -1) x -= SmallFont2.StringWidth(t) * (align == 0 ? 0.5 : 1);
Screen.DrawText(SmallFont2, Font.CR_UNDEFINED, x, y, t, DTA_FullscreenScale, fsmode, DTA_TranslationIndex, Translation.MakeID(Translation_Remap, trans), DTA_Color, Raze.shadeToLight(shade));
}
}
struct DukePlayer

View file

@ -473,75 +473,7 @@ class DukeMultiplayerBonusScreen : SkippableScreenJob
Screen.DrawTexture(TexMan.CheckForTexture("INGAMEDUKETHREEDEE"), true, 160, 34, DTA_FullscreenScale, FSMode_Fit320x200, DTA_CenterOffsetRel, true, DTA_ScaleX, titlescale, DTA_ScaleY, titlescale);
if (Raze.isPlutoPak()) Screen.DrawTexture(TexMan.CheckForTexture("MENUPLUTOPAKSPRITE"), true, 260, 36, DTA_FullscreenScale, FSMode_Fit320x200, DTA_CenterOffsetRel, true);
Duke.GameText(160, isRR? 58 : 58 + 2, "$Multiplayer Totals", 0, 0);
Duke.GameText(160, 58 + 10, currentLevel.DisplayName(), 0, 0);
Duke.GameText(160, 165, "$Presskey", 8 - int(sin(currentclock / 10.) * 8), 0);
int t = 0;
Duke.MiniText(38, 80, "$Name", 0, -1, isRR? 0 : 8);
Duke.MiniText(269+20, 80, "$Kills", 0, 1, isRR? 0: 8);
for (int i = 0; i < playerswhenstarted; i++)
{
tempbuf = String.Format("%-4d", i + 1);
Duke.MiniText(92 + (i * 23), 80, tempbuf, 0, -1, isRR? 0: 3);
}
for (int i = 0; i < playerswhenstarted; i++)
{
int xfragtotal = 0;
tempbuf = String.Format("%d", i + 1);
Duke.MiniText(30, 90 + t, tempbuf, 0);
Duke.MiniText(38, 90 + t, Raze.PlayerName(i), 0, -1, Raze.playerPalette(i));
for (int y = 0; y < playerswhenstarted; y++)
{
int frag = Raze.playerFrags(i, y);
if (i == y)
{
int fraggedself = Raze.playerFraggedSelf(y);
tempbuf = String.Format("%-4d", fraggedself);
Duke.MiniText(92 + (y * 23), 90 + t, tempbuf, 0, -1, isRR? 0: 2);
xfragtotal -= fraggedself;
}
else
{
tempbuf = String.Format("%-4d", frag);
Duke.MiniText(92 + (y * 23), 90 + t, tempbuf, 0);
xfragtotal += frag;
}
/*
if (myconnectindex == connecthead)
{
tempbuf = String.Format("stats %ld killed %ld %ld\n", i + 1, y + 1, frag);
sendscore(tempbuf);
}
*/
}
tempbuf = String.Format("%-4d", xfragtotal);
Duke.MiniText(101 + (8 * 23), 90 + t, tempbuf, 0, -1, isRR? 0: 2);
t += 7;
}
for (int y = 0; y < playerswhenstarted; y++)
{
int yfragtotal = 0;
for (int i = 0; i < playerswhenstarted; i++)
{
if (i == y)
yfragtotal += Raze.playerFraggedself(i);
int frag = Raze.playerFrags(i, y);
yfragtotal += frag;
}
tempbuf = String.Format("%-4d", yfragtotal);
Duke.MiniText(92 + (y * 23), 96 + (8 * 7), tempbuf, 0, -1, isRR? 0: 2);
}
Duke.MiniText(45, 96 + (8 * 7), "$Deaths", 0, -1, isRR? 0: 8);
Raze.DrawScoreboard(60);
}
}

View file

@ -137,21 +137,6 @@ struct SW native
Screen.DrawText(SmallFont, Font.CR_UNDEFINED, x, y, text, DTA_FullscreenScale, FSMode_Fit320x200,
DTA_Color, Raze.shadeToLight(shade), DTA_TranslationIndex, Translation.MakeID(Translation_Remap, pal));
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
static void DrawSmallString(int x, int y, String text, int shade, int pal, int align = -1, double alpha = 1.)
{
if (align != -1) x -= SmallFont2.StringWidth(text) * (align == 0 ? 0.5 : 1);
Screen.DrawText(SmallFont2, Font.CR_UNDEFINED, x, y, text, DTA_FullscreenScale, FSMode_Fit320x200,
DTA_Color, Raze.shadeToLight(shade), DTA_TranslationIndex, Translation.MakeID(Translation_Remap, pal), DTA_Alpha, alpha);
}
}

View file

@ -325,102 +325,8 @@ class SWMultiSummaryScreen : SkippableScreenJob
override void Draw(double sr)
{
int death_total[MAXPLAYERS];
int kills[MAXPLAYERS];
Screen.DrawTexture(TexMan.CheckForTexture("STAT_SCREEN_PIC", TexMan.Type_Any), true, 0, 0, DTA_FullscreenEx, FSMode_ScaleToFit43, DTA_LegacyRenderStyle, STYLE_Normal);
SW.DrawString(160, 68, "$MULTIPLAYER TOTALS", 0, 0);
SW.DrawString(160, 189, "$PRESSKEY", 0, 0, 0);
int x = STAT_START_X;
int y = STAT_START_Y;
// Hm.... how to translate this without messing up the formatting?
SW.DrawSmallString(x, y, " NAME 1 2 3 4 5 6 7 8 KILLS", 0, 0);
int rows = numplayers;
int cols = numplayers;
y += STAT_HEADER_Y;
String ds;
for (int i = 0; i < rows; i++)
{
x = STAT_START_X;
ds = String.Format("%d", i + 1);
SW.DrawSmallString(x, y, ds, 0, 0);
ds = String.Format(" %-13s", Raze.PlayerName(i));
SW.DrawSmallString(x, y, ds, 0, Raze.playerPalette(i));
x = STAT_TABLE_X;
for (int j = 0; j < cols; j++)
{
int pal = 0;
int frags = Raze.PlayerFrags(i, j);
death_total[j] += frags;
if (i == j)
{
// don't add kill for self or team player
pal = PALETTE_PLAYER0 + 4;
kills[i] -= frags; // subtract self kills
}
else if (false/*gNet.TeamPlay*/)
{
if (Raze.playerPalette(i) == Raze.playerPalette(j))
{
// don't add kill for self or team player
pal = PALETTE_PLAYER0 + 4;
kills[i] -= frags; // subtract self kills
}
else
kills[i] += frags; // kills added here
}
else
{
kills[i] += frags; // kills added here
}
ds = String.Format("%d", frags);
SW.DrawSmallString(x, y, ds, 0, pal);
x += STAT_TABLE_XOFF;
}
y += STAT_OFF_Y;
}
// Deaths
x = STAT_START_X;
y += STAT_OFF_Y;
ds = String.Format(" %s", StringTable.Localize("$DEATHS"));
SW.DrawSmallString(x, y, ds, 0, 0);
x = STAT_TABLE_X;
for (int j = 0; j < cols; j++)
{
ds = String.Format("%d", death_total[j]);
SW.DrawSmallString(x, y, ds, 0, 0);
x += STAT_TABLE_XOFF;
}
x = STAT_START_X;
y += STAT_OFF_Y;
// Kills
x = STAT_TABLE_X + 200;
y = STAT_START_Y + STAT_HEADER_Y;
for (int i = 0; i < rows; i++)
{
ds = String.Format("%d", kills[i]); //pp.Kills);
SW.DrawSmallString(x, y, ds, 0, 0);
y += STAT_OFF_Y;
}
Raze.DrawScoreboard(60);
}
}

View file

@ -209,6 +209,12 @@ struct Raze
{
return 0;
}
static void DrawScoreboard(int top)
{
// todo: reimplement this in a game independent fashion based on GZDoom's code.
// Right now, with no MP support there is no need, though.
}
}