From 6d851f2bc8855d5dbd83471c95a834abd5c46d86 Mon Sep 17 00:00:00 2001 From: toaster Date: Mon, 14 Feb 2022 15:43:56 +0000 Subject: [PATCH] P_LoadLevel is a mess, but attempt to fix a few things that shouldn't be happening with resyncs, including #209. Untested. --- src/p_saveg.c | 3 ++- src/p_setup.c | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/p_saveg.c b/src/p_saveg.c index 0561d365a..0a5da687f 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -4496,7 +4496,8 @@ static inline boolean P_NetUnArchiveMisc(boolean reloading) // tell the sound code to reset the music since we're skipping what // normally sets this flag - mapmusflags |= MUSIC_RELOADRESET; + if (!reloading) + mapmusflags |= MUSIC_RELOADRESET; G_SetGamestate(READINT16(save_p)); diff --git a/src/p_setup.c b/src/p_setup.c index 1a1583a0a..b87f5014e 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -3943,9 +3943,12 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) // will be set by player think. players[consoleplayer].viewz = 1; + // Cancel all d_main.c fadeouts (keep fade in though). + if (reloadinggamestate) + wipegamestate = gamestate; // Don't fade if reloading the gamestate // Encore mode fade to pink to white // This is handled BEFORE sounds are stopped. - if (encoremode && !prevencoremode && !demo.rewinding) + else if (encoremode && !prevencoremode && !demo.rewinding) { if (rendermode != render_none) { @@ -4007,10 +4010,6 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) } } - // Cancel all d_main.c fadeouts (keep fade in though). - if (reloadinggamestate) - wipegamestate = gamestate; // Don't fade if reloading the gamestate - // Special stage & record attack retry fade to white // This is handled BEFORE sounds are stopped. if (G_GetModeAttackRetryFlag()) @@ -4032,7 +4031,7 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) // Let's fade to white here // But only if we didn't do the encore startup wipe - if (!demo.rewinding) + if (!demo.rewinding && !reloadinggamestate) { // Make sure all sounds are stopped before Z_FreeTags. S_StopSounds(); @@ -4204,10 +4203,9 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) { P_InitCamera(); memset(localaiming, 0, sizeof(localaiming)); + K_InitDirector(); } - K_InitDirector(); - wantedcalcdelay = wantedfrequency*2; indirectitemcooldown = 0; hyubgone = 0; @@ -4237,7 +4235,7 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) if (!(netgame || multiplayer || demo.playback) && !majormods) mapvisited[gamemap-1] |= MV_VISITED; - else if (netgame || multiplayer) + else if (!demo.playback) mapvisited[gamemap-1] |= MV_MP; // you want to record that you've been there this session, but not permanently G_AddMapToBuffer(gamemap-1); @@ -4260,7 +4258,11 @@ boolean P_LoadLevel(boolean fromnetsave, boolean reloadinggamestate) lastmaploaded = gamemap; // HAS to be set after saving!! } - if (grandprixinfo.gp == true) + if (reloadinggamestate) + { + CONS_Printf("Gamestate reloaded; bot infomation may be corrupted, requires further testing...\n"); + } + else if (grandprixinfo.gp == true) { if (grandprixinfo.initalize == true) {