From aa0f58325c98dfc93b74570b1250bba6ec715bcb Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Fri, 10 Sep 2021 22:19:53 +0200 Subject: [PATCH] Restore main menu upon loading --- cgdoom/d_main.c | 53 ++++++++++++++++++++++++++++++++++++++++++++----- cgdoom/g_game.c | 3 +++ 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/cgdoom/d_main.c b/cgdoom/d_main.c index b985bfd..5251c1c 100644 --- a/cgdoom/d_main.c +++ b/cgdoom/d_main.c @@ -198,6 +198,10 @@ void D_Display (void) if (gamestate == GS_LEVEL && gametic) HU_Drawer (); + // clean up border stuff + if (gamestate != oldgamestate && gamestate != GS_LEVEL) + I_SetPalette ((byte *)W_CacheLumpNameConst ("PLAYPAL", PU_CACHE)); + menuactivestate = menuactive; viewactivestate = viewactive; inhelpscreensstate = inhelpscreens; @@ -332,12 +336,51 @@ int skill = 2; // void D_DoAdvanceDemo (void) { - pagename = "TITLEPIC"; - gamestate= GS_LEVEL; - G_DeferedInitNew((skill_t)skill,episode,map); - advancedemo= false; -} + players[consoleplayer].playerstate = PST_LIVE; // not reborn + advancedemo = false; + usergame = false; // no save / end game here + paused = false; + gameaction = ga_nothing; + if ( gamemode == retail ) + demosequence = (demosequence+1)%3; + else + demosequence = (demosequence+1)%2; + + switch (demosequence) + { + case 0: + if ( gamemode == commercial ) + pagetic = 35 * 11; + else + pagetic = 170; + gamestate = GS_DEMOSCREEN; + pagename = "TITLEPIC"; + break; + case 1: + pagetic = 200; + gamestate = GS_DEMOSCREEN; + pagename = "CREDIT"; + break; + case 2: + gamestate = GS_DEMOSCREEN; + if ( gamemode == commercial) + { + pagetic = 35 * 11; + pagename = "TITLEPIC"; + } + else + { + pagetic = 200; + + if ( gamemode == retail ) + pagename = "CREDIT"; + else + pagename = "HELP2"; + } + break; + } +} // diff --git a/cgdoom/g_game.c b/cgdoom/g_game.c index b1b854b..dd4fff9 100644 --- a/cgdoom/g_game.c +++ b/cgdoom/g_game.c @@ -458,6 +458,9 @@ void G_Ticker (void) case ga_savegame: G_DoSaveGame (); break; + case ga_playdemo: + /* CGDoom: Main menu demo is disabled (code removed) */ + break; case ga_completed: G_DoCompleted (); break;