X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=71f707ced8a8ed3e1ade522fbb0940379c54f387;hb=d4d8a4410fbd9239df7ca3359184fc44d5e15e56;hp=cd07263f007f2e4842c1395e13a5c17f6d6adecf;hpb=d0c35d05e88d7c3761c074135af990fc14302ace;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index cd07263f..71f707ce 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 { @@ -1179,7 +1187,7 @@ void TapeQuickSave(void) { if (game_status == GAME_MODE_MAIN) { - Request("No game that can be saved!", REQ_CONFIRM); + Request("No game that could be saved!", REQ_CONFIRM); return; } @@ -1187,12 +1195,19 @@ void TapeQuickSave(void) if (game_status != GAME_MODE_PLAYING) return; + 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; } @@ -1380,15 +1395,14 @@ boolean PlaySolutionTape(void) static boolean PlayScoreTape_WaitForDownload(void) { - unsigned int download_delay = 0; - unsigned int download_delay_value = 10000; + DelayCounter download_delay = { 10000 }; ResetDelayCounter(&download_delay); // wait for score tape to be successfully downloaded (and fail on timeout) while (!server_scores.tape_downloaded) { - if (DelayReached(&download_delay, download_delay_value)) + if (DelayReached(&download_delay)) return FALSE; UPDATE_BUSY_STATE_NOT_LOADING(); @@ -1578,15 +1592,14 @@ static void AutoPlayTapes_SetScoreEntry(int score, int time) static boolean AutoPlayTapes_WaitForUpload(void) { - unsigned int upload_delay = 0; - unsigned int upload_delay_value = 10000; + DelayCounter upload_delay = { 10000 }; ResetDelayCounter(&upload_delay); // wait for score tape to be successfully uploaded (and fail on timeout) while (!server_scores.uploaded) { - if (DelayReached(&upload_delay, upload_delay_value)) + if (DelayReached(&upload_delay)) { PrintNoLog("\r"); Print("- uploading score tape to score server - TIMEOUT.\n");