clean up the HUD setup menu (#1295)

* clean up the HUD setup menu

* consolidate coords/stats/time widget settings into one each

* improve wording
This commit is contained in:
Fabian Greffrath 2023-11-30 14:12:34 +01:00 committed by GitHub
parent 3d4e3122cd
commit 780a6c4ecc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 81 additions and 144 deletions

View File

@ -1413,8 +1413,7 @@ boolean HU_DemoProgressBar(boolean force)
}
// [FG] level stats and level time widgets
int map_player_coords, map_level_stats, map_level_time;
int hud_level_stats, hud_level_time;
int hud_player_coords, hud_level_stats, hud_level_time;
//
// HU_Drawer()
@ -1469,7 +1468,7 @@ void WI_DrawTimeWidget(void)
{
const hu_widget_t w = {&w_sttime, align_left, align_top};
if (hud_level_time)
if (hud_level_time == 2)
{
HUlib_reset_align_offsets();
// leveltime is already added to totalleveltimes before WI_Start()
@ -1628,15 +1627,17 @@ void HU_Ticker(void)
// draw the automap widgets if automap is displayed
if (automapactive)
if (automap_on)
{
HU_cond_build_widget(&w_monsec, map_level_stats);
HU_cond_build_widget(&w_sttime, map_level_time);
HU_cond_build_widget(&w_coord, STRICTMODE(map_player_coords));
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));
}
else
{
HU_cond_build_widget(&w_coord, STRICTMODE(map_player_coords) == 2);
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_fps, plr->cheats & CF_SHOWFPS);
@ -1659,16 +1660,6 @@ void HU_Ticker(void)
HU_cond_build_widget(&w_ammo, true);
HU_cond_build_widget(&w_keys, true);
}
HU_cond_build_widget(&w_monsec, hud_level_stats);
HU_cond_build_widget(&w_sttime, hud_level_time);
}
else if (scaledviewheight &&
scaledviewheight < SCREENHEIGHT &&
automap_off)
{
HU_cond_build_widget(&w_monsec, hud_level_stats);
HU_cond_build_widget(&w_sttime, hud_level_time);
}
// update crosshair properties

View File

@ -69,8 +69,7 @@ extern int hud_displayed; // hud is displayed
//jff 2/18/98 hud/status control
extern int hud_active; // hud mode 0=off, 1=small, 2=full
extern int hud_secret_message; // "A secret is revealed!" message
extern int map_player_coords, map_level_stats, map_level_time; // [FG] level stats and level time widgets
extern int hud_level_stats, hud_level_time;
extern int hud_player_coords, hud_level_stats, hud_level_time;
extern int hud_widget_font;
extern int hud_widescreen_widgets;
extern int hud_draw_bargraphs;

View File

@ -3305,13 +3305,12 @@ void M_DrawWeapons(void)
// Screen table definitions
setup_menu_t stat_settings1[], stat_settings2[], stat_settings3[];
setup_menu_t stat_settings1[], stat_settings2[];
setup_menu_t* stat_settings[] =
{
stat_settings1,
stat_settings2,
stat_settings3,
NULL
};
@ -3319,43 +3318,44 @@ enum {
stat1_title1,
stat1_rednum,
stat1_graypcnt,
stat1_keys,
stat1_stub1,
stat1_title2,
stat1_coords,
stat1_stats,
stat1_time,
stat1_healthr,
stat1_healthy,
stat1_healthg,
stat1_armorr,
stat1_armory,
stat1_armorg,
stat1_ammor,
stat1_ammoy,
stat1_stub2,
stat1_title3,
stat1_backpack,
stat1_armortype,
stat1_smooth,
};
static const char *show_widgets_strings[] = {
"OFF", "ON AUTOMAP", "ALWAYS", NULL
};
setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen
{
{"STATUS BAR" ,S_SKIP|S_TITLE,m_null,M_X,M_Y},
{"STATUS BAR" ,S_SKIP|S_TITLE,m_null,M_X,M_Y+stat1_title1*M_SPC},
{"USE STANDARD COLORS",S_YESNO|S_COSMETIC,m_null,M_X,M_Y+stat1_rednum*M_SPC, {"sts_always_red"}},
{"GRAY %" ,S_YESNO|S_COSMETIC,m_null,M_X,M_Y+stat1_graypcnt*M_SPC, {"sts_pct_always_gray"}},
{"SINGLE KEY DISPLAY",S_YESNO|S_COSMETIC,m_null,M_X,M_Y+stat1_keys*M_SPC, {"sts_traditional_keys"}},
{"",S_SKIP,m_null,M_X,M_Y+stat1_stub1*M_SPC},
{"HEADS-UP DISPLAY" ,S_SKIP|S_TITLE,m_null,M_X,M_Y+stat1_title2*M_SPC},
{"SHOW LEVEL STATS" ,S_YESNO|S_COSMETIC,m_null,M_X,M_Y+stat1_stats*M_SPC, {"hud_level_stats"}},
{"SHOW LEVEL TIME" ,S_YESNO|S_COSMETIC,m_null,M_X,M_Y+stat1_time*M_SPC, {"hud_level_time"}},
{"HEALTH LOW/OK" ,S_NUM|S_COSMETIC,m_null,M_X,M_Y+stat1_healthr*M_SPC, {"health_red"}},
{"HEALTH OK/GOOD" ,S_NUM|S_COSMETIC,m_null,M_X,M_Y+stat1_healthy*M_SPC, {"health_yellow"}},
{"HEALTH GOOD/EXTRA" ,S_NUM|S_COSMETIC,m_null,M_X,M_Y+stat1_healthg*M_SPC, {"health_green"}},
{"ARMOR LOW/OK" ,S_NUM|S_COSMETIC,m_null,M_X,M_Y+stat1_armorr*M_SPC, {"armor_red"}},
{"ARMOR OK/GOOD" ,S_NUM|S_COSMETIC,m_null,M_X,M_Y+stat1_armory*M_SPC, {"armor_yellow"}},
{"ARMOR GOOD/EXTRA" ,S_NUM|S_COSMETIC,m_null,M_X,M_Y+stat1_armorg*M_SPC, {"armor_green"}},
{"AMMO LOW/OK" ,S_NUM|S_COSMETIC,m_null,M_X,M_Y+stat1_ammor*M_SPC, {"ammo_red"}},
{"AMMO OK/GOOD" ,S_NUM|S_COSMETIC,m_null,M_X,M_Y+stat1_ammoy*M_SPC, {"ammo_yellow"}},
{"SHOW PLAYER COORDS",S_CHOICE|S_STRICT,m_null,M_X,M_Y+stat1_coords*M_SPC, {"hud_player_coords"},0,NULL,show_widgets_strings},
{"SHOW LEVEL STATS" ,S_CHOICE,m_null,M_X,M_Y+stat1_stats*M_SPC, {"hud_level_stats"},0,NULL,show_widgets_strings},
{"SHOW LEVEL TIME" ,S_CHOICE,m_null,M_X,M_Y+stat1_time*M_SPC, {"hud_level_time"},0,NULL,show_widgets_strings},
{"",S_SKIP,m_null,M_X,M_Y+stat1_stub2*M_SPC},
{"WIDGET APPEARANCE",S_SKIP|S_TITLE,m_null,M_X,M_Y+stat1_title3*M_SPC},
{"BACKPACK SHIFTS AMMO COLORS" ,S_YESNO,m_null,M_X,M_Y+stat1_backpack*M_SPC, {"hud_backpack_thresholds"}},
{"ARMOR COLOR DEPENDS ON TYPE" ,S_YESNO,m_null,M_X,M_Y+stat1_armortype*M_SPC, {"hud_armor_type"}},
{"SMOOTH HEALTH/ARMOR COUNT" ,S_YESNO,m_null,M_X,M_Y+stat1_smooth*M_SPC, {"smooth_counts"}},
// Button for resetting to defaults
{0,S_RESET,m_null,X_BUTTON,Y_BUTTON},
@ -3368,42 +3368,31 @@ setup_menu_t stat_settings1[] = // Status Bar and HUD Settings screen
enum {
stat2_title1,
stat2_backpack,
stat2_armortype,
stat2_smooth,
stat2_stub1,
stat2_title2,
stat2_crispyhud,
stat2_hudfont,
stat2_widescreen,
stat2_threelined,
stat2_bargraphs,
};
enum {
stat3_title1,
stat3_xhair,
stat3_xhairhealth,
stat3_xhairtarget,
stat3_xhairlockon,
stat3_xhaircolor,
stat3_xhairtcolor,
stat2_stub1,
stat2_title2,
stat2_xhair,
stat2_xhairhealth,
stat2_xhairtarget,
stat2_xhairlockon,
stat2_xhaircolor,
stat2_xhairtcolor,
};
static void M_UpdateCrosshairItems (void)
{
DISABLE_ITEM(!hud_crosshair, stat_settings3[stat3_xhairhealth]);
DISABLE_ITEM(!hud_crosshair, stat_settings3[stat3_xhairtarget]);
DISABLE_ITEM(!hud_crosshair, stat_settings3[stat3_xhairlockon]);
DISABLE_ITEM(!hud_crosshair, stat_settings3[stat3_xhaircolor]);
DISABLE_ITEM(!hud_crosshair, stat_settings2[stat2_xhairhealth]);
DISABLE_ITEM(!hud_crosshair, stat_settings2[stat2_xhairtarget]);
DISABLE_ITEM(!hud_crosshair, stat_settings2[stat2_xhairlockon]);
DISABLE_ITEM(!hud_crosshair, stat_settings2[stat2_xhaircolor]);
DISABLE_ITEM(!(hud_crosshair && hud_crosshair_target == crosstarget_highlight),
stat_settings3[stat3_xhairtcolor]);
stat_settings2[stat2_xhairtcolor]);
}
static const char *show_widgets_strings[] = {
"OFF", "ON AUTOMAP", "ALWAYS", NULL
};
static const char *crosshair_target_str[] = {
"OFF", "HIGHLIGHT", "HEALTH", NULL
};
@ -3415,15 +3404,7 @@ static const char *hudcolor_str[] = {
setup_menu_t stat_settings2[] =
{
{"WIDGET APPEARANCE",S_SKIP|S_TITLE,m_null,M_X,M_Y},
{"BACKPACK CHANGES THRESHOLDS" ,S_YESNO,m_null,M_X,M_Y+stat2_backpack*M_SPC, {"hud_backpack_thresholds"}},
{"COLOR OF ARMOR DEPENDS ON TYPE" ,S_YESNO,m_null,M_X,M_Y+stat2_armortype*M_SPC, {"hud_armor_type"}},
{"SMOOTH HEALTH/ARMOR COUNT" ,S_YESNO,m_null,M_X,M_Y+stat2_smooth*M_SPC, {"smooth_counts"}},
{"",S_SKIP,m_null,M_X,M_Y+stat2_stub1*M_SPC},
{"EXTENDED HUD",S_SKIP|S_TITLE,m_null,M_X,M_Y+stat2_title2*M_SPC },
{"EXTENDED HUD",S_SKIP|S_TITLE,m_null,M_X,M_Y+stat2_title1*M_SPC },
{"PREFER CRISPY HUD OVER BOOM HUD" ,S_YESNO ,m_null,M_X,M_Y+stat2_crispyhud*M_SPC, {"crispy_hud"}},
{"USE STANDARD DOOM FONT FOR WIDGETS", S_CHOICE,m_null,M_X,M_Y+stat2_hudfont*M_SPC, {"hud_widget_font"}, 0, NULL, show_widgets_strings},
@ -3431,25 +3412,18 @@ setup_menu_t stat_settings2[] =
{"3-LINED COORDS/STATS WIDGETS", S_YESNO,m_null,M_X,M_Y+stat2_threelined*M_SPC, {"hud_threelined_widgets"}},
{"DRAW BAR GRAPHS IN WIDGETS", S_YESNO,m_null,M_X,M_Y+stat2_bargraphs*M_SPC, {"hud_draw_bargraphs"}},
{"",S_SKIP,m_null,M_X,M_Y+stat2_stub1*M_SPC},
{"CROSSHAIR",S_SKIP|S_TITLE,m_null,M_X,M_Y+stat2_title2*M_SPC },
{"ENABLE CROSSHAIR", S_CHOICE,m_null,M_X,M_Y+stat2_xhair*M_SPC, {"hud_crosshair"}, 0, M_UpdateCrosshairItems, crosshair_str},
{"COLOR BY PLAYER HEALTH",S_YESNO|S_STRICT,m_null,M_X,M_Y+stat2_xhairhealth*M_SPC, {"hud_crosshair_health"}},
{"COLOR BY TARGET", S_CHOICE|S_STRICT,m_null,M_X,M_Y+stat2_xhairtarget*M_SPC, {"hud_crosshair_target"}, 0, M_UpdateCrosshairItems, crosshair_target_str},
{"LOCK ON TARGET", S_YESNO|S_STRICT,m_null,M_X,M_Y+stat2_xhairlockon*M_SPC, {"hud_crosshair_lockon"}},
{"DEFAULT COLOR", S_CRITEM,m_null,M_X,M_Y+stat2_xhaircolor*M_SPC, {"hud_crosshair_color"}, 0, NULL, hudcolor_str},
{"HIGHLIGHT COLOR", S_CRITEM|S_STRICT,m_null,M_X,M_Y+stat2_xhairtcolor*M_SPC, {"hud_crosshair_target_color"}, 0, NULL, hudcolor_str},
{"<- PREV" ,S_SKIP|S_PREV,m_null,M_X_PREV,M_Y_PREVNEXT, {stat_settings1}},
{"NEXT ->", S_SKIP|S_NEXT,m_null,M_X_NEXT,M_Y_PREVNEXT, {stat_settings3}},
// Final entry
{0,S_SKIP|S_END,m_null}
};
setup_menu_t stat_settings3[] =
{
{"CROSSHAIR",S_SKIP|S_TITLE,m_null,M_X,M_Y+stat3_title1*M_SPC },
{"ENABLE CROSSHAIR", S_CHOICE,m_null,M_X,M_Y+stat3_xhair*M_SPC, {"hud_crosshair"}, 0, M_UpdateCrosshairItems, crosshair_str},
{"COLOR BY PLAYER HEALTH",S_YESNO|S_STRICT,m_null,M_X,M_Y+stat3_xhairhealth*M_SPC, {"hud_crosshair_health"}},
{"COLOR BY TARGET", S_CHOICE|S_STRICT,m_null,M_X,M_Y+stat3_xhairtarget*M_SPC, {"hud_crosshair_target"}, 0, M_UpdateCrosshairItems, crosshair_target_str},
{"LOCK ON TARGET", S_YESNO|S_STRICT,m_null,M_X,M_Y+stat3_xhairlockon*M_SPC, {"hud_crosshair_lockon"}},
{"DEFAULT COLOR", S_CRITEM,m_null,M_X,M_Y+stat3_xhaircolor*M_SPC, {"hud_crosshair_color"}, 0, NULL, hudcolor_str},
{"HIGHLIGHT COLOR", S_CRITEM|S_STRICT,m_null,M_X,M_Y+stat3_xhairtcolor*M_SPC, {"hud_crosshair_target_color"}, 0, NULL, hudcolor_str},
{"<- PREV" ,S_SKIP|S_PREV,m_null,M_X_PREV,M_Y_PREVNEXT, {stat_settings2}},
// Final entry
{0,S_SKIP|S_END,m_null}
@ -3516,14 +3490,9 @@ enum {
auto1_follow,
auto1_rotate,
auto1_overlay,
auto1_pointer,
auto1_stub1,
auto1_title2,
auto1_coords,
auto1_pointer,
auto1_stats,
auto1_time,
auto1_stub2,
auto1_title3,
auto1_smooth,
auto1_secrets,
auto1_flash,
@ -3547,19 +3516,11 @@ setup_menu_t auto_settings1[] = // 1st AutoMap Settings screen
{"Follow Player" ,S_YESNO ,m_null,M_X,M_Y+auto1_follow*M_SPC, {"followplayer"}},
{"Rotate Automap" ,S_YESNO ,m_null,M_X,M_Y+auto1_rotate*M_SPC, {"automaprotate"}},
{"Overlay Automap" ,S_CHOICE,m_null,M_X,M_Y+auto1_overlay*M_SPC, {"automapoverlay"}, 0, NULL, overlay_strings},
{"Coords follow pointer",S_YESNO ,m_null,M_X,M_Y+auto1_pointer*M_SPC, {"map_point_coord"}}, // killough 10/98
{"",S_SKIP,m_null,M_X,M_Y+auto1_stub1*M_SPC},
{"Widgets",S_SKIP|S_TITLE,m_null,M_X,M_Y+auto1_title2*M_SPC},
// [FG] show level statistics and level time widgets
{"Show player coords" ,S_CHOICE|S_STRICT,m_null,M_X,M_Y+auto1_coords*M_SPC, {"map_player_coords"},0,NULL,show_widgets_strings},
{"Coords follow pointer",S_YESNO ,m_null,M_X,M_Y+auto1_pointer*M_SPC, {"map_point_coord"}}, // killough 10/98
{"Show level stats" ,S_YESNO ,m_null,M_X,M_Y+auto1_stats*M_SPC, {"map_level_stats"}},
{"Show level time" ,S_YESNO ,m_null,M_X,M_Y+auto1_time*M_SPC, {"map_level_time"}},
{"",S_SKIP,m_null,M_X,M_Y+auto1_stub2*M_SPC},
{"Miscellaneous",S_SKIP|S_TITLE,m_null,M_X,M_Y+auto1_title3*M_SPC},
{"Miscellaneous",S_SKIP|S_TITLE,m_null,M_X,M_Y+auto1_title2*M_SPC},
{"Smooth automap lines" ,S_YESNO,m_null,M_X,M_Y+auto1_smooth*M_SPC, {"map_smooth_lines"},0,AM_enableSmoothLines},
{"Show Secrets only after entering",S_YESNO,m_null,M_X,M_Y+auto1_secrets*M_SPC, {"map_secret_after"}},
{"Keyed doors are flashing" ,S_YESNO,m_null,M_X,M_Y+auto1_flash*M_SPC, {"map_keyed_door_flash"}},

View File

@ -2397,30 +2397,6 @@ default_t defaults[] = {
"1 to enable smooth automap lines"
},
// [FG] player coords widget
{
"map_player_coords",
(config_t *) &map_player_coords, NULL,
{1}, {0,2}, number, ss_auto, wad_yes,
"1 to show player coords widget"
},
// [FG] level stats widget
{
"map_level_stats",
(config_t *) &map_level_stats, NULL,
{0}, {0,2}, number, ss_auto, wad_yes,
"1 to show level stats (kill, items and secrets) widget"
},
// [FG] level time widget
{
"map_level_time",
(config_t *) &map_level_time, NULL,
{0}, {0,2}, number, ss_auto, wad_yes,
"1 to show level time widget"
},
{
"followplayer",
(config_t *) &followplayer, NULL,
@ -2672,18 +2648,28 @@ default_t defaults[] = {
"1 to enable display of HUD"
},
{ // no secrets/items/kills HUD line
"hud_level_stats",
(config_t *) &hud_level_stats, NULL,
{0}, {0,1}, number, ss_stat, wad_yes,
"1 to show kills/items/secrets on HUD"
// [FG] player coords widget
{
"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)"
},
{ // no secrets/items/kills HUD line
// [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)"
},
// [FG] level time widget
{
"hud_level_time",
(config_t *) &hud_level_time, NULL,
{0}, {0,1}, number, ss_stat, wad_yes,
"1 to show level time on HUD"
{0}, {0,2}, number, ss_stat, wad_no,
"show level time widget (1 = on Automap, 2 = always)"
},
// prefer Crispy HUD over Boom HUD