Make checkpoint save time more consisitent
This commit is contained in:
parent
bc4330f347
commit
ef4610c308
|
@ -191,7 +191,7 @@ void cutsceneRunnerStartStep(struct CutsceneRunner* runner) {
|
|||
&gZeroVec,
|
||||
gCurrentLevel->locations[step->teleportPlayer.toLocation].roomIndex
|
||||
);
|
||||
checkpointSave(&gScene);
|
||||
sceneQueueCheckpoint(&gScene);
|
||||
break;
|
||||
case CutsceneStepTypeLoadLevel:
|
||||
{
|
||||
|
@ -249,7 +249,7 @@ void cutsceneRunnerStartStep(struct CutsceneRunner* runner) {
|
|||
);
|
||||
break;
|
||||
case CutsceneStepSaveCheckpoint:
|
||||
checkpointSave(&gScene);
|
||||
sceneQueueCheckpoint(&gScene);
|
||||
break;
|
||||
case CutsceneStepKillPlayer:
|
||||
playerKill(&gScene.player, step->killPlayer.isWater);
|
||||
|
|
|
@ -424,16 +424,20 @@ void sceneAnimatorDeserialize(struct Serializer* serializer, struct Scene* scene
|
|||
}
|
||||
}
|
||||
|
||||
#define WRITE_ALIGN_CHECK {action(serializer, ¤tAlign, 1); ++currentAlign;}
|
||||
#define INCLUDE_SAVEFILE_ALIGH_CHECKS 0
|
||||
|
||||
#ifdef PORTAL64_WITH_DEBUGGER
|
||||
#define READ_ALIGN_CHECK {serializeRead(serializer, ¤tAlign, 1); if (currentAlign != expectedAlign) return; ++expectedAlign;}
|
||||
#else
|
||||
#if INCLUDE_SAVEFILE_ALIGH_CHECKS
|
||||
#define WRITE_ALIGN_CHECK {action(serializer, ¤tAlign, 1); ++currentAlign;}
|
||||
#define READ_ALIGN_CHECK {serializeRead(serializer, ¤tAlign, 1); if (currentAlign != expectedAlign) gdbBreak(); ++expectedAlign;}
|
||||
#else
|
||||
#define WRITE_ALIGN_CHECK
|
||||
#define READ_ALIGN_CHECK
|
||||
#endif
|
||||
|
||||
void sceneSerialize(struct Serializer* serializer, SerializeAction action, struct Scene* scene) {
|
||||
#if INCLUDE_SAVEFILE_ALIGH_CHECKS
|
||||
char currentAlign = 0;
|
||||
#endif
|
||||
playerSerialize(serializer, action, &scene->player);
|
||||
WRITE_ALIGN_CHECK;
|
||||
sceneSerializePortals(serializer, action, scene);
|
||||
|
@ -459,8 +463,10 @@ void sceneSerialize(struct Serializer* serializer, SerializeAction action, struc
|
|||
}
|
||||
|
||||
void sceneDeserialize(struct Serializer* serializer, struct Scene* scene) {
|
||||
#if INCLUDE_SAVEFILE_ALIGH_CHECKS
|
||||
char currentAlign = 0;
|
||||
char expectedAlign = 0;
|
||||
#endif
|
||||
playerDeserialize(serializer, &scene->player);
|
||||
READ_ALIGN_CHECK;
|
||||
sceneDeserializePortals(serializer, scene);
|
||||
|
|
|
@ -163,7 +163,7 @@ int elevatorUpdate(struct Elevator* elevator, struct Player* player) {
|
|||
// save the checkpoint after flag ElevatorFlagsIsLocked is set
|
||||
// so loading this checkpoint doesn't immediately create another
|
||||
// save checkpoint
|
||||
checkpointSave(&gScene);
|
||||
sceneQueueCheckpoint(&gScene);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -600,7 +600,7 @@ void sceneUpdate(struct Scene* scene) {
|
|||
&gZeroVec,
|
||||
scene->elevators[teleportTo].roomIndex
|
||||
);
|
||||
checkpointSave(&gScene);
|
||||
sceneQueueCheckpoint(&gScene);
|
||||
sceneClosePortal(&gScene, 0);
|
||||
sceneClosePortal(&gScene, 1);
|
||||
}
|
||||
|
@ -671,6 +671,10 @@ void sceneUpdate(struct Scene* scene) {
|
|||
}
|
||||
}
|
||||
|
||||
void sceneQueueCheckpoint(struct Scene* scene) {
|
||||
scene->checkpointState = SceneCheckpointStateReady;
|
||||
}
|
||||
|
||||
int sceneOpenPortal(struct Scene* scene, struct Transform* at, int transformIndex, int portalIndex, struct PortalSurfaceMappingRange surfaceMapping, struct CollisionObject* collisionObject, int roomIndex, int fromPlayer, int just_checking) {
|
||||
struct Transform finalAt;
|
||||
|
||||
|
|
|
@ -85,6 +85,7 @@ void sceneInit(struct Scene* scene);
|
|||
void sceneInitNoPauseMenu(struct Scene* scene);
|
||||
void sceneRender(struct Scene* scene, struct RenderState* renderState, struct GraphicsTask* task);
|
||||
void sceneUpdate(struct Scene* scene);
|
||||
void sceneQueueCheckpoint(struct Scene* scene);
|
||||
|
||||
int sceneFirePortal(struct Scene* scene, struct Ray* ray, struct Vector3* playerUp, int portalIndex, int roomIndex, int fromPlayer, int just_checking);
|
||||
void sceneClosePortal(struct Scene* scene, int portalIndex);
|
||||
|
|
Loading…
Reference in a new issue