Skip to content

Commit

Permalink
- fixed portal restoration on revisiting level in hub
Browse files Browse the repository at this point in the history
Added function to FLevelLocals to test if map is being reentered

https://forum.zdoom.org/viewtopic.php?t=60455
  • Loading branch information
alexey-lysiuk committed Jun 11, 2018
1 parent bd1525e commit 29d2e77
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
6 changes: 6 additions & 0 deletions src/g_levellocals.h
Expand Up @@ -183,6 +183,12 @@ struct FLevelLocals
return headgamenode;
}

// Returns true if level is loaded from saved game or is being revisited as a part of a hub
bool IsReentering() const
{
return savegamerestore
|| (info != nullptr && info->Snapshot.mBuffer != nullptr && info->isValid());
}
};

extern FLevelLocals level;
Expand Down
2 changes: 1 addition & 1 deletion src/p_setup.cpp
Expand Up @@ -4127,7 +4127,7 @@ void P_SetupLevel (const char *lumpname, int position)
times[16].Clock();
if (reloop) P_LoopSidedefs (false);
PO_Init (); // Initialize the polyobjs
if (!savegamerestore)
if (!level.IsReentering())
P_FinalizePortals(); // finalize line portals after polyobjects have been initialized. This info is needed for properly flagging them.
times[16].Unclock();

Expand Down
2 changes: 1 addition & 1 deletion src/s_sound.cpp
Expand Up @@ -470,7 +470,7 @@ void S_Start ()

// Don't start the music if loading a savegame, because the music is stored there.
// Don't start the music if revisiting a level in a hub for the same reason.
if (!savegamerestore && (level.info == nullptr || level.info->Snapshot.mBuffer == nullptr || !level.info->isValid()))
if (!level.IsReentering())
{
if (level.cdtrack == 0 || !S_ChangeCDMusic (level.cdtrack, level.cdid))
S_ChangeMusic (level.Music, level.musicorder);
Expand Down

0 comments on commit 29d2e77

Please sign in to comment.