allow to show level stats "on HUD" only (#1325)

* allow to show level stats "on HUD" only

Fixes #1322

* selectively enable/disable stats/time on Automap/HUD with the key binding

* some shorter check
This commit is contained in:
Fabian Greffrath 2023-12-14 15:43:04 +01:00 committed by GitHub
parent 4351733ffe
commit 9fe555ed26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 47 additions and 17 deletions

View File

@ -1471,7 +1471,7 @@ void WI_DrawTimeWidget(void)
{ {
const hu_widget_t w = {&w_sttime, align_left, align_top}; const hu_widget_t w = {&w_sttime, align_left, align_top};
if (hud_level_time == 2) if (hud_level_time & HUD_WIDGET_HUD)
{ {
HUlib_reset_align_offsets(); HUlib_reset_align_offsets();
// leveltime is already added to totalleveltimes before WI_Start() // leveltime is already added to totalleveltimes before WI_Start()
@ -1632,15 +1632,15 @@ void HU_Ticker(void)
if (automapactive) if (automapactive)
{ {
HU_cond_build_widget(&w_monsec, hud_level_stats); HU_cond_build_widget(&w_monsec, hud_level_stats & HUD_WIDGET_AUTOMAP);
HU_cond_build_widget(&w_sttime, hud_level_time); HU_cond_build_widget(&w_sttime, hud_level_time & HUD_WIDGET_AUTOMAP);
HU_cond_build_widget(&w_coord, STRICTMODE(hud_player_coords)); HU_cond_build_widget(&w_coord, STRICTMODE(hud_player_coords) & HUD_WIDGET_AUTOMAP);
} }
else else
{ {
HU_cond_build_widget(&w_monsec, hud_level_stats == 2); HU_cond_build_widget(&w_monsec, hud_level_stats & HUD_WIDGET_HUD);
HU_cond_build_widget(&w_sttime, hud_level_time == 2); HU_cond_build_widget(&w_sttime, hud_level_time & HUD_WIDGET_HUD);
HU_cond_build_widget(&w_coord, STRICTMODE(hud_player_coords) == 2); HU_cond_build_widget(&w_coord, STRICTMODE(hud_player_coords) & HUD_WIDGET_HUD);
} }
HU_cond_build_widget(&w_fps, plr->cheats & CF_SHOWFPS); HU_cond_build_widget(&w_fps, plr->cheats & CF_SHOWFPS);

View File

@ -84,6 +84,14 @@ extern int crispy_hud;
extern int hud_crosshair; extern int hud_crosshair;
extern boolean hud_crosshair_health; extern boolean hud_crosshair_health;
enum
{
HUD_WIDGET_OFF,
HUD_WIDGET_AUTOMAP,
HUD_WIDGET_HUD,
HUD_WIDGET_ALWAYS,
};
typedef enum typedef enum
{ {
crosstarget_off, crosstarget_off,

View File

@ -3298,7 +3298,7 @@ enum {
}; };
static const char *show_widgets_strings[] = { static const char *show_widgets_strings[] = {
"OFF", "ON AUTOMAP", "ALWAYS", NULL "OFF", "ON AUTOMAP", "ON HUD", "ALWAYS", NULL
}; };
setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen
@ -5268,10 +5268,32 @@ boolean M_Responder (event_t* ev)
if (M_InputActivated(input_hud_timestats)) if (M_InputActivated(input_hud_timestats))
{ {
if (hud_level_stats || hud_level_time) if (automapactive)
hud_level_stats = hud_level_time = 0; {
if ((hud_level_stats | hud_level_time) & HUD_WIDGET_AUTOMAP)
{
hud_level_stats &= ~HUD_WIDGET_AUTOMAP;
hud_level_time &= ~HUD_WIDGET_AUTOMAP;
}
else
{
hud_level_stats |= HUD_WIDGET_AUTOMAP;
hud_level_time |= HUD_WIDGET_AUTOMAP;
}
}
else else
hud_level_stats = hud_level_time = 1; {
if ((hud_level_stats | hud_level_time) & HUD_WIDGET_HUD)
{
hud_level_stats &= ~HUD_WIDGET_HUD;
hud_level_time &= ~HUD_WIDGET_HUD;
}
else
{
hud_level_stats |= HUD_WIDGET_HUD;
hud_level_time |= HUD_WIDGET_HUD;
}
}
return true; return true;
} }

View File

@ -2651,24 +2651,24 @@ default_t defaults[] = {
{ {
"hud_player_coords", "hud_player_coords",
(config_t *) &hud_player_coords, NULL, (config_t *) &hud_player_coords, NULL,
{1}, {0,2}, number, ss_stat, wad_no, {HUD_WIDGET_AUTOMAP}, {HUD_WIDGET_OFF,HUD_WIDGET_ALWAYS}, number, ss_stat, wad_no,
"show player coords widget (1 = on Automap, 2 = always)" "show player coords widget (1 = on Automap, 2 = on HUD, 3 = always)"
}, },
// [FG] level stats widget // [FG] level stats widget
{ {
"hud_level_stats", "hud_level_stats",
(config_t *) &hud_level_stats, NULL, (config_t *) &hud_level_stats, NULL,
{0}, {0,2}, number, ss_stat, wad_no, {HUD_WIDGET_OFF}, {HUD_WIDGET_OFF,HUD_WIDGET_ALWAYS}, number, ss_stat, wad_no,
"show level stats (kill, items and secrets) widget (1 = on Automap, 2 = always)" "show level stats (kill, items and secrets) widget (1 = on Automap, 2 = on HUD, 3 = always)"
}, },
// [FG] level time widget // [FG] level time widget
{ {
"hud_level_time", "hud_level_time",
(config_t *) &hud_level_time, NULL, (config_t *) &hud_level_time, NULL,
{0}, {0,2}, number, ss_stat, wad_no, {HUD_WIDGET_OFF}, {HUD_WIDGET_OFF,HUD_WIDGET_ALWAYS}, number, ss_stat, wad_no,
"show level time widget (1 = on Automap, 2 = always)" "show level time widget (1 = on Automap, 2 = on HUD, 3 = always)"
}, },
// prefer Crispy HUD over Boom HUD // prefer Crispy HUD over Boom HUD