- Static NewGame events now fire before loading a map, and normal NewGame events fire after registering per-map handlers and before all other events.

- Static event handlers now unregister after per-map handlers.
- All event handlers now unregister in reverse order.
This commit is contained in:
player701 2018-10-31 10:15:56 +03:00 committed by Christoph Oelckers
commit 04ae32f6f9
7 changed files with 33 additions and 21 deletions

View file

@ -526,11 +526,8 @@ void G_InitNew (const char *mapname, bool bTitleLevel)
{
gamestate = GS_LEVEL;
}
G_DoLoadLevel (0, false);
if(!savegamerestore)
{
E_NewGame();
}
G_DoLoadLevel (0, false, !savegamerestore);
}
//
@ -744,7 +741,7 @@ void G_DoCompleted (void)
if (gamestate == GS_TITLELEVEL)
{
level.MapName = nextlevel;
G_DoLoadLevel (startpos, false);
G_DoLoadLevel (startpos, false, false);
startpos = 0;
viewactive = true;
return;
@ -919,7 +916,7 @@ void DAutosaver::Tick ()
extern gamestate_t wipegamestate;
void G_DoLoadLevel (int position, bool autosave)
void G_DoLoadLevel (int position, bool autosave, bool newGame)
{
static int lastposition = 0;
gamestate_t oldgs = gamestate;
@ -1005,7 +1002,12 @@ void G_DoLoadLevel (int position, bool autosave)
level.maptime = 0;
P_SetupLevel (level.MapName, position);
if (newGame)
{
E_NewGame(false);
}
P_SetupLevel (level.MapName, position, newGame);
AM_LevelInit();
@ -1253,7 +1255,7 @@ void G_DoWorldDone (void)
level.MapName = nextlevel;
}
G_StartTravel ();
G_DoLoadLevel (startpos, true);
G_DoLoadLevel (startpos, true, false);
startpos = 0;
gameaction = ga_nothing;
viewactive = true;