draw cmd widget on intermission screen (#2024)

This commit is contained in:
Roman Fomin 2024-11-14 14:07:02 +07:00 committed by GitHub
parent 66f66ee40f
commit 59ed2c0c13
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 31 additions and 11 deletions

View File

@ -134,6 +134,8 @@ static sbardef_t *sbardef;
static statusbar_t *statusbar; static statusbar_t *statusbar;
static int st_cmd_x, st_cmd_y;
typedef enum typedef enum
{ {
st_original, st_original,
@ -782,7 +784,6 @@ static void UpdateNumber(sbarelem_t *elem, player_t *player)
number->xoffset -= totalwidth; number->xoffset -= totalwidth;
} }
number->font = font;
number->value = value; number->value = value;
number->numvalues = numvalues; number->numvalues = numvalues;
} }
@ -840,8 +841,6 @@ static void UpdateLines(sbarelem_t *elem)
} }
line->totalwidth = totalwidth; line->totalwidth = totalwidth;
} }
widget->font = font;
} }
static void UpdateAnimation(sbarelem_t *elem) static void UpdateAnimation(sbarelem_t *elem)
@ -1382,6 +1381,11 @@ static void DrawElem(int x, int y, sbarelem_t *elem, player_t *player)
break; break;
case sbe_widget: case sbe_widget:
if (elem == st_cmd_elem)
{
st_cmd_x = x;
st_cmd_y = y;
}
DrawLines(x, y, elem); DrawLines(x, y, elem);
break; break;
@ -1770,17 +1774,30 @@ void ST_ResetPalette(void)
} }
// [FG] draw Time widget on intermission screen // [FG] draw Time widget on intermission screen
void WI_UpdateWidgets(void)
{
if (st_cmd_elem && STRICTMODE(hud_command_history))
{
ST_UpdateWidget(st_cmd_elem, &players[displayplayer]);
UpdateLines(st_cmd_elem);
}
}
void WI_DrawWidgets(void) void WI_DrawWidgets(void)
{ {
if (!st_time_elem || !(hud_level_time & HUD_WIDGET_HUD)) if (st_time_elem && hud_level_time & HUD_WIDGET_HUD)
{ {
return; sbarelem_t time = *st_time_elem;
time.alignment = sbe_wide_left;
// leveltime is already added to totalleveltimes before WI_Start()
DrawLines(0, 0, &time);
} }
sbarelem_t time = *st_time_elem; if (st_cmd_elem && STRICTMODE(hud_command_history))
time.alignment = sbe_wide_left; {
// leveltime is already added to totalleveltimes before WI_Start() DrawLines(st_cmd_x, st_cmd_y, st_cmd_elem);
DrawLines(0, 0, &time); }
} }
void ST_BindSTSVariables(void) void ST_BindSTSVariables(void)

View File

@ -72,6 +72,7 @@ extern boolean palette_changes;
extern struct hudfont_s *stcfnt; extern struct hudfont_s *stcfnt;
extern struct patch_s **hu_font; extern struct patch_s **hu_font;
void WI_UpdateWidgets(void);
void WI_DrawWidgets(void); void WI_DrawWidgets(void);
void ST_BindSTSVariables(void); void ST_BindSTSVariables(void);

View File

@ -1103,7 +1103,7 @@ void ST_ResetMessageColors(void)
} }
} }
sbarelem_t *st_time_elem = NULL; sbarelem_t *st_time_elem = NULL, *st_cmd_elem = NULL;
void ST_UpdateWidget(sbarelem_t *elem, player_t *player) void ST_UpdateWidget(sbarelem_t *elem, player_t *player)
{ {
@ -1144,6 +1144,7 @@ void ST_UpdateWidget(sbarelem_t *elem, player_t *player)
UpdateRate(widget, player); UpdateRate(widget, player);
break; break;
case sbw_cmd: case sbw_cmd:
st_cmd_elem = elem;
UpdateCmd(widget); UpdateCmd(widget);
break; break;
case sbw_speed: case sbw_speed:

View File

@ -56,7 +56,7 @@ extern int hudcolor_xyco;
extern boolean hud_time_use; extern boolean hud_time_use;
extern struct sbarelem_s *st_time_elem; extern struct sbarelem_s *st_time_elem, *st_cmd_elem;
void ST_ResetTitle(void); void ST_ResetTitle(void);

View File

@ -2259,6 +2259,7 @@ void WI_Ticker(void)
else else
if (netgame) WI_updateNetgameStats(); if (netgame) WI_updateNetgameStats();
else WI_updateStats(); else WI_updateStats();
WI_UpdateWidgets();
break; break;
case ShowNextLoc: case ShowNextLoc: