From 012286a98f153d50ddea948b7b6e2b0123891b9d Mon Sep 17 00:00:00 2001 From: James Lambert Date: Fri, 5 May 2023 21:16:38 -0600 Subject: [PATCH] Serialize portals --- src/levels/cutscene_runner.c | 5 ++--- src/main.c | 1 - src/scene/scene.c | 6 +++++- src/scene/signals.c | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/levels/cutscene_runner.c b/src/levels/cutscene_runner.c index 0c5cacf..ee914e5 100644 --- a/src/levels/cutscene_runner.c +++ b/src/levels/cutscene_runner.c @@ -203,7 +203,6 @@ void cutsceneRunnerStartStep(struct CutsceneRunner* runner) { transformConcat(&exitInverse, &gScene.player.lookTransform, &relativeExit); quatMultVector(&exitInverse.rotation, &gScene.player.body.velocity, &relativeVelocity); levelQueueLoad(step->loadLevel.levelIndex, &relativeExit, &relativeVelocity); - checkpointSave(&gScene); break; } case CutsceneStepTypeGoto: @@ -480,7 +479,7 @@ void cutsceneSerializeWrite(struct Serializer* serializer, SerializeAction actio action(serializer, &volume, sizeof(volume)); } - u16 noSound = SOUND_ID_NONE; + s16 noSound = SOUND_ID_NONE; action(serializer, &noSound, sizeof(noSound)); } } @@ -500,7 +499,7 @@ void cutsceneSerializeRead(struct Serializer* serializer) { serializeRead(serializer, &gTriggeredCutscenes, sizeof (gTriggeredCutscenes)); for (int i = 0; i < CH_COUNT; ++i) { - u16 nextId; + s16 nextId; serializeRead(serializer, &nextId, sizeof(nextId)); while (nextId != SOUND_ID_NONE) { diff --git a/src/main.c b/src/main.c index ae5ddf6..92a7a74 100644 --- a/src/main.c +++ b/src/main.c @@ -232,7 +232,6 @@ static void gameProc(void* arg) { levelLoadWithCallbacks(levelGetQueued()); cutsceneRunnerReset(); gSceneCallbacks->initCallback(gSceneCallbacks->data); - checkpointLoadLast(&gScene); } break; diff --git a/src/scene/scene.c b/src/scene/scene.c index 03dd34d..67ec53b 100644 --- a/src/scene/scene.c +++ b/src/scene/scene.c @@ -76,10 +76,14 @@ void sceneInitDynamicColliders(struct Scene* scene) { void sceneInit(struct Scene* scene) { sceneInitNoPauseMenu(scene); + + gameMenuInit(&gGameMenu, gPauseMenuOptions, sizeof(gPauseMenuOptions) / sizeof(*gPauseMenuOptions), 1); + if (!checkpointExists()) { checkpointSave(scene); + } else { + checkpointLoadLast(scene); } - gameMenuInit(&gGameMenu, gPauseMenuOptions, sizeof(gPauseMenuOptions) / sizeof(*gPauseMenuOptions), 1); gGameMenu.state = GameMenuStateResumeGame; } diff --git a/src/scene/signals.c b/src/scene/signals.c index 966af81..1f0956d 100644 --- a/src/scene/signals.c +++ b/src/scene/signals.c @@ -102,6 +102,6 @@ void signalsEvaluateSignals(struct SignalOperator* operator, unsigned count) { void signalsSerializeRW(struct Serializer* serializer, SerializeAction action) { int binCount = SIGNAL_BIN_COUNT(gSignalCount); - action(serializer, serializer, sizeof(unsigned long long) * binCount); + action(serializer, gSignals, sizeof(unsigned long long) * binCount); action(serializer, gDefaultSignals, sizeof(unsigned long long) * binCount); } \ No newline at end of file