From 08299afa41df0abfacc8c41302a46e898fcb6c17 Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Wed, 3 Apr 2024 21:58:28 -0400 Subject: [PATCH] Don't reload level on gamestate resend The level will only reload during a gamestate reload if the map is horribly mismatched somehow. Minor differences in level state are already handled by other parts of the reload, so doing this on *every* reload wastes lots of time. --- src/p_saveg.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/p_saveg.c b/src/p_saveg.c index c30c741f2..7093d4e2c 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -6699,6 +6699,8 @@ static boolean P_NetUnArchiveMisc(savebuffer_t *save, boolean reloading) size_t i, j; size_t numTasks; + const INT16 prevgamemap = gamemap; + if (READUINT32(save->p) != ARCHIVEBLOCK_MISC) I_Error("Bad $$$.sav at archive block Misc"); @@ -6739,10 +6741,19 @@ static boolean P_NetUnArchiveMisc(savebuffer_t *save, boolean reloading) mapmusrng = READUINT8(save->p); - if (!P_LoadLevel(true, reloading)) + // Only reload the level during a gamestate reload + // if the map is horribly mismatched somehow. Minor + // differences in level state are already handled + // by other parts of the reload, so doing this + // on *every* reload wastes lots of time that we + // will need for rollback down the road. + if (!reloading || prevgamemap != gamemap) { - CONS_Alert(CONS_ERROR, M_GetText("Can't load the level!\n")); - return false; + if (!P_LoadLevel(true, reloading)) + { + CONS_Alert(CONS_ERROR, M_GetText("Can't load the level!\n")); + return false; + } } // get the time