From dfc450d844a40bdb6d73f5f7aa5201f551635c78 Mon Sep 17 00:00:00 2001 From: ceski <56656010+ceski-1@users.noreply.github.com> Date: Mon, 2 Sep 2024 08:36:59 -0700 Subject: [PATCH] Replace `show_endoom` with `exit_sequence` (#1873) --- src/d_main.c | 29 ++++++++++++++++++++--------- src/d_main.h | 2 +- src/mn_menu.c | 2 +- src/mn_setup.c | 12 +++++++----- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index 8cc16971..38002a82 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1711,14 +1711,18 @@ void D_SetBloodColor(void) // killough 2/22/98: Add support for ENDBOOM, which is PC-specific // killough 8/1/98: change back to ENDOOM -static int show_endoom; +typedef enum { + EXIT_SEQUENCE_OFF, // Skip sound, skip ENDOOM. + EXIT_SEQUENCE_SOUND_ONLY, // Play sound, skip ENDOOM. + EXIT_SEQUENCE_PWAD_ENDOOM, // Play sound, show ENDOOM for PWADs only. + EXIT_SEQUENCE_ON // Play sound, show ENDOOM. +} exit_sequence_t; -// Don't show ENDOOM if we have it disabled. -boolean D_CheckEndDoom(void) +static exit_sequence_t exit_sequence; + +boolean D_AllowQuitSound(void) { - int lumpnum = W_CheckNumForName("ENDOOM"); - - return (show_endoom == 1 || (show_endoom == 2 && !W_IsIWADLump(lumpnum))); + return (exit_sequence != EXIT_SEQUENCE_OFF); } static void D_ShowEndDoom(void) @@ -1729,9 +1733,16 @@ static void D_ShowEndDoom(void) I_Endoom(endoom); } +static boolean AllowEndDoom(void) +{ + return (exit_sequence == EXIT_SEQUENCE_ON + || (exit_sequence == EXIT_SEQUENCE_PWAD_ENDOOM + && !W_IsIWADLump(W_CheckNumForName("ENDOOM")))); +} + static void D_EndDoom(void) { - if (D_CheckEndDoom()) + if (AllowEndDoom()) { D_ShowEndDoom(); } @@ -2684,8 +2695,8 @@ void D_DoomMain(void) void D_BindMiscVariables(void) { - BIND_NUM_GENERAL(show_endoom, 0, 0, 2, - "Show ENDOOM screen (0 = Off; 1 = On; 2 = PWADs only)"); + BIND_NUM_GENERAL(exit_sequence, 0, 0, EXIT_SEQUENCE_ON, + "Exit sequence (0 = Off; 1 = Sound Only; 2 = PWAD ENDOOM; 3 = On)"); BIND_BOOL_GENERAL(demobar, false, "Show demo progress bar"); BIND_NUM_GENERAL(screen_melt, wipe_Melt, wipe_None, wipe_Fizzle, "Screen wipe effect (0 = None; 1 = Melt; 2 = Crossfade; 3 = Fizzlefade)"); diff --git a/src/d_main.h b/src/d_main.h index eea0bbda..7427e52b 100644 --- a/src/d_main.h +++ b/src/d_main.h @@ -43,7 +43,7 @@ extern boolean clfastparm; // checkparm of -fast void D_SetMaxHealth(void); void D_SetBloodColor(void); -boolean D_CheckEndDoom(void); +boolean D_AllowQuitSound(void); // Called by IO functions when input is detected. void D_PostEvent(struct event_s *ev); diff --git a/src/mn_menu.c b/src/mn_menu.c index 4dd0b26a..0a49614c 100644 --- a/src/mn_menu.c +++ b/src/mn_menu.c @@ -1245,7 +1245,7 @@ static void M_QuitResponse(int ch) { return; } - if (D_CheckEndDoom() && // play quit sound only if showing ENDOOM + if (D_AllowQuitSound() && (!netgame || demoplayback) && // killough 12/98 !nosfxparm) // avoid delay if no sound card { diff --git a/src/mn_setup.c b/src/mn_setup.c index 052e064a..f1a44ec5 100644 --- a/src/mn_setup.c +++ b/src/mn_setup.c @@ -334,7 +334,7 @@ enum str_default_skill, str_default_complevel, - str_endoom, + str_exit_sequence, str_death_use_action, str_menu_backdrop, str_widescreen, @@ -2659,7 +2659,9 @@ static void SmoothLight(void) static const char *menu_backdrop_strings[] = {"Off", "Dark", "Texture"}; -static const char *endoom_strings[] = {"off", "on", "PWAD only"}; +static const char *exit_sequence_strings[] = { + "Off", "Sound Only", "PWAD ENDOOM", "On" +}; static setup_menu_t gen_settings5[] = { @@ -2695,8 +2697,8 @@ static setup_menu_t gen_settings5[] = { {"Menu Backdrop", S_CHOICE, OFF_CNTR_X, M_SPC, {"menu_backdrop"}, .strings_id = str_menu_backdrop}, - {"Show ENDOOM Screen", S_CHOICE, OFF_CNTR_X, M_SPC, {"show_endoom"}, - .strings_id = str_endoom}, + {"Exit Sequence", S_CHOICE, OFF_CNTR_X, M_SPC, {"exit_sequence"}, + .strings_id = str_exit_sequence}, MI_END }; @@ -4217,7 +4219,7 @@ static const char **selectstrings[] = { NULL, // str_gyro_accel default_skill_strings, default_complevel_strings, - endoom_strings, + exit_sequence_strings, death_use_action_strings, menu_backdrop_strings, widescreen_strings,