for (i = 0; i < MAX_PLAYERS; i++)
game.snapshot.last_action[i] = 0;
game.snapshot.changed_action = FALSE;
- game.snapshot.mode = SNAPSHOT_MODE_MOVE;
+ game.snapshot.mode =
+ (strEqual(setup.engine_snapshot_mode, STR_SNAPSHOT_MODE_EVERY_STEP) ?
+ SNAPSHOT_MODE_EVERY_STEP :
+ strEqual(setup.engine_snapshot_mode, STR_SNAPSHOT_MODE_EVERY_MOVE) ?
+ SNAPSHOT_MODE_EVERY_MOVE : SNAPSHOT_MODE_OFF);
FreeEngineSnapshotList();
}
{
boolean save_snapshot =
(FrameCounter == 0 ||
- (game.snapshot.mode == SNAPSHOT_MODE_STEP) ||
- (game.snapshot.mode == SNAPSHOT_MODE_MOVE &&
+ (game.snapshot.mode == SNAPSHOT_MODE_EVERY_STEP) ||
+ (game.snapshot.mode == SNAPSHOT_MODE_EVERY_MOVE &&
game.snapshot.changed_action));
game.snapshot.changed_action = FALSE;
- if (!save_snapshot)
+ if (game.snapshot.mode == SNAPSHOT_MODE_OFF || !save_snapshot)
return FALSE;
ListNode *buffers = SaveEngineSnapshotBuffers();
LoadEngineSnapshotValues();
}
-boolean CheckEngineSnapshot()
+boolean CheckEngineSnapshotSingle()
{
return (strEqual(snapshot_level_identifier, leveldir_current->identifier) &&
snapshot_level_nr == level_nr);
}
+boolean CheckEngineSnapshotList()
+{
+ return CheckSnapshotList();
+}
+
/* ---------- new game button stuff ---------------------------------------- */
void GameUndo(int steps)
{
- if (!CheckEngineSnapshot())
+ if (!CheckEngineSnapshotList())
return;
LoadEngineSnapshot_Undo(steps);
void GameRedo(int steps)
{
- if (!CheckEngineSnapshot())
+ if (!CheckEngineSnapshotList())
return;
LoadEngineSnapshot_Redo(steps);