X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=0c13baa662c32516b02d2f677a34a3a30928f7aa;hb=924c7a3933d49d4fb53ad39c8f767ac259052404;hp=d6c538d9dfd9b6191c180742b993bb2fbed3a8e6;hpb=584c5950f79b9d0abbc4698f96dcfeffa64a786a;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index d6c538d9..0c13baa6 100644 --- a/src/tape.c +++ b/src/tape.c @@ -675,22 +675,12 @@ void TapeTogglePause(boolean toggle_manual) DrawVideoDisplayPlayState(); - if (tape.warp_forward) + if (tape.deactivate_display) { if (tape.pausing) - { TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING); - } - else if (tape.deactivate_display) - { - TapeDeactivateDisplayOn(); - - DrawVideoDisplaySymbol(VIDEO_STATE_WARP_ON); - } else - { - DrawVideoDisplaySymbol(VIDEO_STATE_WARP2_ON); - } + TapeDeactivateDisplayOn(); } if (tape.quick_resume) @@ -775,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); @@ -788,22 +775,33 @@ 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; } if (update_video_display && !tape.deactivate_display) { - if (tape.pause_before_end) - DrawVideoDisplayLabel(VIDEO_STATE_PBEND(update_draw_label_on)); - else if (tape.fast_forward) - DrawVideoDisplayLabel(VIDEO_STATE_FFWD(update_draw_label_on)); + int state = 0; if (tape.warp_forward) - DrawVideoDisplaySymbol(VIDEO_STATE_WARP2_ON); + state |= VIDEO_STATE_WARP(update_draw_label_on); + else if (tape.fast_forward) + state |= VIDEO_STATE_FFWD(update_draw_label_on); + + if (tape.pause_before_end) + state |= VIDEO_STATE_PBEND(update_draw_label_on); + + // draw labels and symbols separately to prevent labels overlapping symbols + DrawVideoDisplayLabel(state); + DrawVideoDisplaySymbol(state); } for (i = 0; i < MAX_PLAYERS; i++) @@ -877,43 +875,28 @@ 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(); - DrawVideoDisplay(VIDEO_STATE_PBEND_ON, 0); - DrawVideoDisplaySymbol(VIDEO_STATE_WARP_ON); - } - else - { - DrawVideoDisplaySymbol(VIDEO_STATE_WARP2_ON); - } + DrawVideoDisplayPlayState(); } static void TapeStopWarpForward() { - int state = VIDEO_STATE_PAUSE(tape.pausing); - - if (tape.deactivate_display) - tape.pause_before_end = FALSE; - + tape.fast_forward = FALSE; tape.warp_forward = FALSE; tape.deactivate_display = FALSE; - TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING); + tape.pause_before_end = FALSE; - state |= VIDEO_STATE_WARP_OFF; - state |= (tape.pause_before_end ? VIDEO_STATE_PBEND_ON : - tape.fast_forward ? VIDEO_STATE_FFWD_ON : - VIDEO_STATE_PLAY_ON); + TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING); - DrawVideoDisplay(state, 0); + DrawVideoDisplayPlayState(); } static void TapeSingleStep()