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};
if (hud_level_time == 2)
if (hud_level_time & HUD_WIDGET_HUD)
{
HUlib_reset_align_offsets();
// leveltime is already added to totalleveltimes before WI_Start()
@ -1632,15 +1632,15 @@ void HU_Ticker(void)
if (automapactive)
{
HU_cond_build_widget(&w_monsec, hud_level_stats);
HU_cond_build_widget(&w_sttime, hud_level_time);
HU_cond_build_widget(&w_coord, STRICTMODE(hud_player_coords));
HU_cond_build_widget(&w_monsec, hud_level_stats & HUD_WIDGET_AUTOMAP);
HU_cond_build_widget(&w_sttime, hud_level_time & HUD_WIDGET_AUTOMAP);
HU_cond_build_widget(&w_coord, STRICTMODE(hud_player_coords) & HUD_WIDGET_AUTOMAP);
}
else
{
HU_cond_build_widget(&w_monsec, hud_level_stats == 2);
HU_cond_build_widget(&w_sttime, hud_level_time == 2);
HU_cond_build_widget(&w_coord, STRICTMODE(hud_player_coords) == 2);
HU_cond_build_widget(&w_monsec, hud_level_stats & HUD_WIDGET_HUD);
HU_cond_build_widget(&w_sttime, hud_level_time & HUD_WIDGET_HUD);
HU_cond_build_widget(&w_coord, STRICTMODE(hud_player_coords) & HUD_WIDGET_HUD);
}
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 boolean hud_crosshair_health;
enum
{
HUD_WIDGET_OFF,
HUD_WIDGET_AUTOMAP,
HUD_WIDGET_HUD,
HUD_WIDGET_ALWAYS,
};
typedef enum
{
crosstarget_off,

View File

@ -3298,7 +3298,7 @@ enum {
};
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
@ -5268,10 +5268,32 @@ boolean M_Responder (event_t* ev)
if (M_InputActivated(input_hud_timestats))
{
if (hud_level_stats || hud_level_time)
hud_level_stats = hud_level_time = 0;
if (automapactive)
{
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
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;
}

View File

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