fixed wording of some request texts
[rocksndiamonds.git] / src / tape.c
index e9b7f4cc65e7018d43d4a08ae7c2799739b32164..71f707ced8a8ed3e1ade522fbb0940379c54f387 100644 (file)
@@ -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();
@@ -1402,11 +1416,20 @@ static boolean PlayScoreTape_WaitForDownload(void)
 boolean PlayScoreTape(int entry_nr)
 {
   struct ScoreEntry *entry = &scores.entry[entry_nr];
-  char *tape_filename = getScoreTapeFilename(entry->tape_basename, level_nr);
+  char *tape_filename =
+    (entry->id == -1 ?
+     getScoreTapeFilename(entry->tape_basename, level_nr) :
+     getScoreCacheTapeFilename(entry->tape_basename, level_nr));
   boolean download_tape = (!fileExists(tape_filename));
 
   if (download_tape && entry->id == -1)
+  {
+    FadeSkipNextFadeIn();
+
+    Request("Cannot find score tape!", REQ_CONFIRM);
+
     return FALSE;
+  }
 
   server_scores.tape_downloaded = FALSE;
 
@@ -1433,7 +1456,10 @@ boolean PlayScoreTape(int entry_nr)
   // if tape recorder already contains a tape, remove it without asking
   TapeErase();
 
-  LoadScoreTape(entry->tape_basename, level_nr);
+  if (entry->id == -1)
+    LoadScoreTape(entry->tape_basename, level_nr);
+  else
+    LoadScoreCacheTape(entry->tape_basename, level_nr);
 
   if (TAPE_IS_EMPTY(tape))
   {
@@ -1566,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");