Return to replay hut after watching a replay

This commit is contained in:
fickleheart 2019-03-31 19:26:53 -05:00
parent 704ce59761
commit 266a590a14
4 changed files with 15 additions and 8 deletions

View file

@ -3856,7 +3856,12 @@ void G_AfterIntermission(void)
if (demo.playback) if (demo.playback)
{ {
G_StopDemo(); G_StopDemo();
D_StartTitle();
if (demo.inreplayhut)
M_ReplayHut(0);
else
D_StartTitle();
return; return;
} }
else if (demo.recording && demo.savemode != DSM_NOTSAVING) else if (demo.recording && demo.savemode != DSM_NOTSAVING)

View file

@ -46,6 +46,7 @@ struct demovars_s {
boolean loadfiles, ignorefiles; // Demo file loading options boolean loadfiles, ignorefiles; // Demo file loading options
boolean fromtitle; // SRB2Kart: Don't stop the music boolean fromtitle; // SRB2Kart: Don't stop the music
boolean inreplayhut; // Go back to replayhut after demos
boolean quitafterplaying; // quit after playing a demo from cmdline boolean quitafterplaying; // quit after playing a demo from cmdline
boolean deferstart; // don't start playing demo right away boolean deferstart; // don't start playing demo right away

View file

@ -338,7 +338,6 @@ static patch_t *addonsp[NUM_EXT+5];
// Replay hut // Replay hut
menu_t MISC_ReplayHutDef; menu_t MISC_ReplayHutDef;
static void M_ReplayHut(INT32 choice);
static void M_HandleReplayHutList(INT32 choice); static void M_HandleReplayHutList(INT32 choice);
static void M_DrawReplayHut(void); static void M_DrawReplayHut(void);
static void M_DrawReplayStartMenu(void); static void M_DrawReplayStartMenu(void);
@ -5065,7 +5064,6 @@ menudemo_t *demolist;
#define DF_ENCORE 0x40 #define DF_ENCORE 0x40
static INT16 replayScrollTitle = 0; static INT16 replayScrollTitle = 0;
static INT8 replayScrollDelay = TICRATE, replayScrollDir = 1; static INT8 replayScrollDelay = TICRATE, replayScrollDir = 1;
static boolean inreplayhut = false;
static void PrepReplayList(void) static void PrepReplayList(void)
{ {
@ -5097,11 +5095,11 @@ static void PrepReplayList(void)
} }
} }
static void M_ReplayHut(INT32 choice) void M_ReplayHut(INT32 choice)
{ {
(void)choice; (void)choice;
if (!inreplayhut) if (!demo.inreplayhut)
{ {
snprintf(menupath, 1024, "%s"PATHSEP"replay"PATHSEP"online"PATHSEP, srb2home); snprintf(menupath, 1024, "%s"PATHSEP"replay"PATHSEP"online"PATHSEP, srb2home);
menupathindex[(menudepthleft = menudepth-1)] = strlen(menupath); menupathindex[(menudepthleft = menudepth-1)] = strlen(menupath);
@ -5111,12 +5109,13 @@ static void M_ReplayHut(INT32 choice)
M_StartMessage("No replays found.\n\n(Press a key)\n", NULL, MM_NOTHING); M_StartMessage("No replays found.\n\n(Press a key)\n", NULL, MM_NOTHING);
return; return;
} }
else if (!inreplayhut) else if (!demo.inreplayhut)
dir_on[menudepthleft] = 0; dir_on[menudepthleft] = 0;
inreplayhut = true; demo.inreplayhut = true;
PrepReplayList(); PrepReplayList();
menuactive = true;
M_SetupNextMenu(&MISC_ReplayHutDef); M_SetupNextMenu(&MISC_ReplayHutDef);
G_SetGamestate(GS_TIMEATTACK); G_SetGamestate(GS_TIMEATTACK);
@ -5505,7 +5504,7 @@ static boolean M_QuitReplayHut(void)
Z_Free(demolist); Z_Free(demolist);
demolist = NULL; demolist = NULL;
inreplayhut = false; demo.inreplayhut = false;
return true; return true;
} }

View file

@ -235,6 +235,8 @@ void Screenshot_option_Onchange(void);
// Addons menu updating // Addons menu updating
void Addons_option_Onchange(void); void Addons_option_Onchange(void);
void M_ReplayHut(INT32 choice);
INT32 HU_GetHighlightColor(void); INT32 HU_GetHighlightColor(void);
// These defines make it a little easier to make menus // These defines make it a little easier to make menus