X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftape.c;h=6b1b011cca8a628b6699e38d54108ebfc14f40b3;hb=784245c2e4dd32b84cff6c6044380c7801cb5513;hp=34474bde1eba4b333a6ba1c7e7c7b8457cdccc3f;hpb=8ed54ba814cb0a10e73cbc29c833f2c5d77e9907;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index 34474bde..6b1b011c 100644 --- a/src/tape.c +++ b/src/tape.c @@ -734,7 +734,7 @@ static void TapeStartGameRecording() { TapeStartRecording(); -#if defined(PLATFORM_UNIX) +#if defined(NETWORK_AVALIABLE) if (options.network) SendToServer_StartPlaying(); else @@ -962,7 +962,7 @@ byte *TapePlayAction() DrawVideoDisplay(VIDEO_STATE_WARP2_ON, VIDEO_DISPLAY_SYMBOL_ONLY); } - if (TimePlayed > tape.length_seconds - TAPE_PAUSE_SECONDS_BEFORE_DEATH) + if (TapeTime > tape.length_seconds - TAPE_PAUSE_SECONDS_BEFORE_DEATH) { TapeTogglePause(TAPE_TOGGLE_MANUAL); return NULL; @@ -1152,6 +1152,23 @@ void TapeQuickSave() void TapeQuickLoad() { + char *filename = getTapeFilename(level_nr); + + if (!fileExists(filename)) + { + Request("No tape for this level !", REQ_CONFIRM); + + return; + } + + if (tape.recording && !Request("Stop recording and load tape ?", + REQ_ASK | REQ_STAY_CLOSED)) + { + OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK); + + return; + } + if (game_status == GAME_MODE_PLAYING || game_status == GAME_MODE_MAIN) { TapeStop(); @@ -1165,8 +1182,12 @@ void TapeQuickLoad() tape.quick_resume = TRUE; } - else - Request("No tape for this level !", REQ_CONFIRM); + else /* this should not happen (basically checked above) */ + { + int reopen_door = (game_status == GAME_MODE_PLAYING ? REQ_REOPEN : 0); + + Request("No tape for this level !", REQ_CONFIRM | reopen_door); + } } } @@ -1293,6 +1314,7 @@ void AutoPlayTape() printf("LEVELDIR '%s', SOLVED %d/%d (%d%%)", autoplay_leveldir->identifier, num_levels_solved, num_levels_played, (num_levels_played ? num_levels_solved * 100 / num_levels_played :0)); + if (num_levels_played != num_levels_solved) { printf(", FAILED:"); @@ -1300,6 +1322,7 @@ void AutoPlayTape() if (levels_failed[i]) printf(" %03d", i); } + printf("\n"); printf_line("=", 79); @@ -1547,9 +1570,15 @@ static void HandleTapeButtons(struct GadgetInfo *gi) } else /* AUTO PAUSE -> NORMAL PLAY */ { +#if 1 + if (tape.warp_forward) + TapeStopWarpForward(); +#else + tape.warp_forward = FALSE; +#endif tape.fast_forward = FALSE; tape.pause_before_death = FALSE; - tape.warp_forward = FALSE; + #if 1 DrawVideoDisplay(VIDEO_STATE_PBEND_OFF | VIDEO_STATE_PLAY_ON, 0); #else