X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftape.c;h=ff6d10f250c8e48d6e440b0bbbb3eb9690944f9e;hp=2ddd754ddbdfeb49c51b2336a2b22606233062d4;hb=e9a2029050b7d36830d3a6c7e1b21831ba0d2b42;hpb=d4034197ba4731eec935af5c7439e22df253110b diff --git a/src/tape.c b/src/tape.c index 2ddd754d..ff6d10f2 100644 --- a/src/tape.c +++ b/src/tape.c @@ -765,9 +765,6 @@ byte *TapePlayAction() { if (TapeTime > tape.length_seconds - TAPE_PAUSE_SECONDS_BEFORE_DEATH) { - tape.fast_forward = FALSE; - tape.pause_before_end = FALSE; - TapeStopWarpForward(); TapeTogglePause(TAPE_TOGGLE_MANUAL); @@ -778,9 +775,14 @@ byte *TapePlayAction() if (tape.counter >= tape.length) /* end of tape reached */ { if (tape.warp_forward && !tape.auto_play) + { + TapeStopWarpForward(); TapeTogglePause(TAPE_TOGGLE_MANUAL); + } else + { TapeStop(); + } return NULL; } @@ -873,28 +875,25 @@ unsigned int GetTapeLengthSeconds() static void TapeStartWarpForward() { + tape.fast_forward = TRUE; tape.warp_forward = TRUE; + tape.deactivate_display = TRUE; - if (!tape.fast_forward && !tape.pause_before_end) - { - tape.pausing = FALSE; - tape.pause_before_end = TRUE; - tape.deactivate_display = TRUE; + tape.pausing = FALSE; - TapeDeactivateDisplayOn(); - } + TapeDeactivateDisplayOn(); DrawVideoDisplayPlayState(); } static void TapeStopWarpForward() { - if (tape.deactivate_display) - tape.pause_before_end = FALSE; - + tape.fast_forward = FALSE; tape.warp_forward = FALSE; tape.deactivate_display = FALSE; + tape.pause_before_end = FALSE; + TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING); DrawVideoDisplayPlayState(); @@ -1307,18 +1306,9 @@ static void HandleTapeButtonsExt(int id) case TAPE_CTRL_ID_EXTRA: if (tape.playing) { - if (!tape.warp_forward) /* PLAY -> WARP FORWARD PLAY */ - { - TapeStartWarpForward(); - } - else if (tape.pausing) /* PAUSE -> WARP FORWARD PLAY */ - { - TapeTogglePause(TAPE_TOGGLE_MANUAL); - } - else /* WARP FORWARD PLAY -> PLAY */ - { - TapeStopWarpForward(); - } + tape.pause_before_end = !tape.pause_before_end; + + DrawVideoDisplayPlayState(); } else if (tape.recording) TapeSingleStep(); @@ -1372,36 +1362,30 @@ static void HandleTapeButtonsExt(int id) TapeTogglePause(TAPE_TOGGLE_MANUAL); } - else if (tape.warp_forward && - !tape.fast_forward) /* WARP FORWARD PLAY -> PLAY */ + else if (!tape.fast_forward) /* PLAY -> FFWD */ { - TapeStopWarpForward(); + tape.fast_forward = TRUE; } - else if (!tape.fast_forward) /* PLAY -> FAST FORWARD PLAY */ + else if (!tape.warp_forward) /* FFWD -> WARP */ { - tape.fast_forward = TRUE; - - DrawVideoDisplay(VIDEO_STATE_FFWD_ON, 0); + tape.warp_forward = TRUE; } - else if (!tape.pause_before_end) /* FFWD PLAY -> AUTO PAUSE */ + else if (!tape.deactivate_display) /* WARP -> WARP BLIND */ { - tape.pause_before_end = TRUE; - - DrawVideoDisplay(VIDEO_STATE_FFWD_OFF | VIDEO_STATE_PBEND_ON, 0); + tape.deactivate_display = TRUE; - if (tape.warp_forward) - DrawVideoDisplaySymbol(VIDEO_STATE_WARP2_ON); + TapeDeactivateDisplayOn(); } - else /* AUTO PAUSE -> NORMAL PLAY */ + else /* WARP BLIND -> PLAY */ { - if (tape.warp_forward) - TapeStopWarpForward(); - tape.fast_forward = FALSE; - tape.pause_before_end = FALSE; + tape.warp_forward = FALSE; + tape.deactivate_display = FALSE; - DrawVideoDisplay(VIDEO_STATE_PBEND_OFF | VIDEO_STATE_PLAY_ON, 0); + TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING); } + + DrawVideoDisplayPlayState(); } break;