X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=cd07263f007f2e4842c1395e13a5c17f6d6adecf;hb=4a0a9d29b36c9367444191a3e6c5ab9fc7b5ae4f;hp=e0491485339bab365025f3fc24363b5c6c656eb7;hpb=84b4d1874b7dfed42ace079941a65baea0ac4ff6;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index e0491485..cd07263f 100644 --- a/src/tape.c +++ b/src/tape.c @@ -1378,17 +1378,6 @@ boolean PlaySolutionTape(void) return TRUE; } -static void PlayScoreTape_UpdateBusyState(void) -{ - int game_status_last = game_status; - - SetGameStatus(GAME_MODE_LOADING); - - UPDATE_BUSY_STATE(); - - SetGameStatus(game_status_last); -} - static boolean PlayScoreTape_WaitForDownload(void) { unsigned int download_delay = 0; @@ -1402,7 +1391,7 @@ static boolean PlayScoreTape_WaitForDownload(void) if (DelayReached(&download_delay, download_delay_value)) return FALSE; - PlayScoreTape_UpdateBusyState(); + UPDATE_BUSY_STATE_NOT_LOADING(); Delay(20); } @@ -1413,11 +1402,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 (entry->id == -1) + if (download_tape && entry->id == -1) + { + FadeSkipNextFadeIn(); + + Request("Cannot find score tape!", REQ_CONFIRM); + return FALSE; + } server_scores.tape_downloaded = FALSE; @@ -1444,7 +1442,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)) {