From 06e67e141d1eca210aa18df011e59455545a794f Mon Sep 17 00:00:00 2001 From: Marcin Kurczewski Date: Sat, 1 Feb 2025 13:22:43 +0100 Subject: [PATCH] game-flow: initialise cutscenes in gameflow --- src/tr1/game/cutscene.c | 9 ++------- src/tr1/game/game_flow/sequencer.c | 1 + src/tr2/game/cutscene.c | 6 ++---- src/tr2/game/game_flow/sequencer.c | 3 +++ 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/tr1/game/cutscene.c b/src/tr1/game/cutscene.c index da1a4f2d7..1916df64f 100644 --- a/src/tr1/game/cutscene.c +++ b/src/tr1/game/cutscene.c @@ -18,10 +18,9 @@ #include "global/types.h" #include "global/vars.h" +#include #include -#include - static void M_InitialiseLara(const GF_LEVEL *level); static void M_InitialiseLara(const GF_LEVEL *const level) @@ -60,11 +59,7 @@ static void M_InitialiseLara(const GF_LEVEL *const level) bool Cutscene_Start(const int32_t level_num) { const GF_LEVEL *const level = GF_GetLevel(GFLT_CUTSCENES, level_num); - if (GF_GetCurrentLevel()->num != level_num) { - if (!Level_Initialise(level)) { - return false; - } - } + ASSERT(GF_GetCurrentLevel() == level); M_InitialiseLara(level); diff --git a/src/tr1/game/game_flow/sequencer.c b/src/tr1/game/game_flow/sequencer.c index 6b21f86a6..5e550ce61 100644 --- a/src/tr1/game/game_flow/sequencer.c +++ b/src/tr1/game/game_flow/sequencer.c @@ -203,6 +203,7 @@ static DECLARE_EVENT_HANDLER(M_HandlePlayLevel) ASSERT(GF_GetCurrentLevel() == level); gf_cmd = GF_RunDemo(level->num); } else if (level->type == GFL_CUTSCENE) { + ASSERT(GF_GetCurrentLevel() == level); gf_cmd = GF_RunCutscene(level->num); } else { if (seq_ctx != GFSC_SAVED && level != GF_GetFirstLevel()) { diff --git a/src/tr2/game/cutscene.c b/src/tr2/game/cutscene.c index 0a2e9a45e..8ad326f1c 100644 --- a/src/tr2/game/cutscene.c +++ b/src/tr2/game/cutscene.c @@ -16,7 +16,7 @@ #include "global/vars.h" #include -#include +#include #include static void M_FixAudioDrift(void); @@ -35,9 +35,7 @@ static void M_FixAudioDrift(void) bool Cutscene_Start(const int32_t level_num) { const GF_LEVEL *const level = GF_GetLevel(GFLT_CUTSCENES, level_num); - if (!Level_Initialise(level, GFSC_NORMAL)) { - return false; - } + ASSERT(GF_GetCurrentLevel() == level); Room_InitCinematic(); CutscenePlayer1_Initialise(g_Lara.item_num); diff --git a/src/tr2/game/game_flow/sequencer.c b/src/tr2/game/game_flow/sequencer.c index 651851a92..98ae23387 100644 --- a/src/tr2/game/game_flow/sequencer.c +++ b/src/tr2/game/game_flow/sequencer.c @@ -74,6 +74,9 @@ static DECLARE_EVENT_HANDLER(M_HandlePlayLevel) } gf_cmd = GF_RunDemo(level->num); } else if (level->type == GFL_CUTSCENE) { + if (!Level_Initialise(level, seq_ctx)) { + return (GF_COMMAND) { .action = GF_EXIT_TO_TITLE }; + } gf_cmd = GF_RunCutscene(level->num); } else { gf_cmd = GF_RunGame(level, seq_ctx);