X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=c0939acd8dbd87c752c4aa143dfa203d37d60182;hb=22846a3ec9df44b291989369ae220060ecd57bcb;hp=3fb22a8d598369b9f6fbb3791fa8c33317c52829;hpb=e89a21e95b3cb84d1515c0fb3378ce902a48c1c8;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index 3fb22a8d..c0939acd 100644 --- a/src/tape.c +++ b/src/tape.c @@ -664,6 +664,7 @@ void TapeErase(void) tape.level_nr = level_nr; tape.pos[tape.counter].delay = 0; tape.changed = TRUE; + tape.solved = FALSE; tape.random_seed = InitRND(level.random_seed); @@ -760,6 +761,7 @@ static void TapeAppendRecording(void) // start recording tape.recording = TRUE; tape.changed = TRUE; + tape.solved = FALSE; // set current delay (for last played move) tape.pos[tape.counter].delay = tape.delay_played; @@ -992,16 +994,22 @@ byte *TapePlayAction(void) TapeStopWarpForward(); TapeTogglePause(TAPE_TOGGLE_MANUAL); + if (setup.autorecord_after_replay) + TapeAppendRecording(); + return NULL; } } if (tape.counter >= tape.length) // end of tape reached { - if (tape.warp_forward && !tape.auto_play) + if (!tape.auto_play) { TapeStopWarpForward(); TapeTogglePause(TAPE_TOGGLE_MANUAL); + + if (setup.autorecord_after_replay) + TapeAppendRecording(); } else { @@ -1177,22 +1185,26 @@ static void TapeSingleStep(void) void TapeQuickSave(void) { - if (game_status == GAME_MODE_MAIN) + if (game_status != GAME_MODE_PLAYING) { - Request("No game that can be saved!", REQ_CONFIRM); + Request("No game that could be saved!", REQ_CONFIRM); return; } - if (game_status != GAME_MODE_PLAYING) + if (!tape.recording) + { + Request("No recording that could be saved!", REQ_CONFIRM); + return; + } if (tape.recording) TapeHaltRecording(); // prepare tape for saving on-the-fly if (TAPE_IS_EMPTY(tape)) { - Request("No tape that can be saved!", REQ_CONFIRM); + Request("No tape that could be saved!", REQ_CONFIRM); return; }