X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=642ce5c399d814bac1b65a967fe35aa09b306390;hb=a047db7b385f7523ca97deb21fdc504f34a80c7e;hp=880c4f9ee8d3d879282c540e4587a8c84c4a1344;hpb=74c0f7de91268e40d15948f473eac51a9760b9c0;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index 880c4f9e..642ce5c3 100644 --- a/src/tape.c +++ b/src/tape.c @@ -420,8 +420,13 @@ void TapeRecordAction(byte action[MAX_PLAYERS]) { int i; +#if 1 + if (!tape.recording) /* record action even when tape is paused! */ + return; +#else if (!tape.recording || tape.pausing) return; +#endif if (tape.counter >= MAX_TAPELEN - 1) { @@ -429,6 +434,10 @@ void TapeRecordAction(byte action[MAX_PLAYERS]) return; } +#if 0 + printf("::: %05d: recording action: %d\n", FrameCounter, action[0]); +#endif + if (tape.pos[tape.counter].delay > 0) /* already stored action */ { boolean changed_events = FALSE; @@ -448,6 +457,11 @@ void TapeRecordAction(byte action[MAX_PLAYERS]) if (tape.pos[tape.counter].delay == 0) /* store new action */ { + +#if 0 + printf("::: %05d: new sequence\n", FrameCounter); +#endif + for (i = 0; i < MAX_PLAYERS; i++) tape.pos[tape.counter].action[i] = action[i]; @@ -486,7 +500,9 @@ void TapeTogglePause(boolean toggle_manual) tape.quick_resume = FALSE; TapeAppendRecording(); +#if 0 TapeTogglePause(toggle_manual); +#endif } } } @@ -581,11 +597,22 @@ byte *TapePlayAction() tape.delay_played = 0; } +#if 0 + printf("::: %05d: replaying action: %d\n", FrameCounter, action[0]); +#endif + return action; } void TapeStop() { +#if 0 + if (tape.recording) + printf("::: stopped recording: %d\n", FrameCounter); + else if (tape.playing) + printf("::: stopped playing: %d\n\n", FrameCounter); +#endif + TapeStopRecording(); TapeStopPlaying(); @@ -636,8 +663,13 @@ static void TapeStopIndexSearch() SetDrawDeactivationMask(REDRAW_NONE); audio.sound_deactivated = FALSE; - RedrawPlayfield(TRUE, 0,0,0,0); - DrawGameDoorValues(); +#if 1 + if (game_status == GAME_MODE_PLAYING) +#endif + { + RedrawPlayfield(TRUE, 0,0,0,0); + DrawGameDoorValues(); + } } static void TapeSingleStep() @@ -687,6 +719,19 @@ void TapeQuickLoad() } } +void InsertSolutionTape() +{ + if (!TAPE_IS_EMPTY(tape)) + return; + + LoadSolutionTape(level_nr); + + if (TAPE_IS_EMPTY(tape)) + Request("No solution tape for this level !", REQ_CONFIRM); + + DrawCompleteVideoDisplay(); +} + /* ------------------------------------------------------------------------- * * tape autoplay functions @@ -762,14 +807,18 @@ void AutoPlayTape() printf("Level %03d: ", level_nr); LoadLevel(level_nr); - if (level.no_level_file) + if (level.no_valid_file) { printf("(no level)\n"); continue; } - LoadTape(level_nr); + LoadSolutionTape(level_nr); +#if 1 + if (tape.no_valid_file) +#else if (TAPE_IS_EMPTY(tape)) +#endif { printf("(no tape)\n"); continue;