X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftape.c;h=919bd418455f9749b5490bf4445de947b3371a05;hb=a5a80a3aeba9c0c91d52ce1e3ec3860a55ccf4d3;hp=0c13baa662c32516b02d2f677a34a3a30928f7aa;hpb=924c7a3933d49d4fb53ad39c8f767ac259052404;p=rocksndiamonds.git diff --git a/src/tape.c b/src/tape.c index 0c13baa6..919bd418 100644 --- a/src/tape.c +++ b/src/tape.c @@ -356,20 +356,26 @@ void DrawVideoDisplaySymbol(unsigned int state) DrawVideoDisplay(state, VIDEO_DISPLAY_SYMBOL_ONLY); } -void DrawVideoDisplayPlayState() +void DrawVideoDisplayCurrentState() { int state = 0; DrawVideoDisplay(VIDEO_STATE_OFF, 0); - state |= VIDEO_STATE_PLAY_ON; - if (tape.pausing) - { state |= VIDEO_STATE_PAUSE_ON; + + if (tape.recording) + { + state |= VIDEO_STATE_REC_ON; + + if (tape.single_step) + state |= VIDEO_STATE_1STEP_ON; } - else + else if (tape.playing) { + state |= VIDEO_STATE_PLAY_ON; + if (tape.deactivate_display) state |= VIDEO_STATE_WARP2_ON; else if (tape.warp_forward) @@ -673,7 +679,7 @@ void TapeTogglePause(boolean toggle_manual) if (tape.single_step && toggle_manual) tape.single_step = FALSE; - DrawVideoDisplayPlayState(); + DrawVideoDisplayCurrentState(); if (tape.deactivate_display) { @@ -883,7 +889,7 @@ static void TapeStartWarpForward() TapeDeactivateDisplayOn(); - DrawVideoDisplayPlayState(); + DrawVideoDisplayCurrentState(); } static void TapeStopWarpForward() @@ -896,7 +902,7 @@ static void TapeStopWarpForward() TapeDeactivateDisplayOff(game_status == GAME_MODE_PLAYING); - DrawVideoDisplayPlayState(); + DrawVideoDisplayCurrentState(); } static void TapeSingleStep() @@ -1306,35 +1312,32 @@ 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; + + DrawVideoDisplayCurrentState(); } else if (tape.recording) + { TapeSingleStep(); + } break; case TAPE_CTRL_ID_STOP: TapeStop(); + break; case TAPE_CTRL_ID_PAUSE: TapeTogglePause(TAPE_TOGGLE_MANUAL); + break; case TAPE_CTRL_ID_RECORD: if (TAPE_IS_STOPPED(tape)) + { TapeStartGameRecording(); + } else if (tape.pausing) { if (tape.playing) /* PLAY -> PAUSE -> RECORD */ @@ -1342,6 +1345,7 @@ static void HandleTapeButtonsExt(int id) else TapeTogglePause(TAPE_TOGGLE_MANUAL); } + break; case TAPE_CTRL_ID_PLAY: @@ -1366,42 +1370,38 @@ static void HandleTapeButtonsExt(int id) // continue playing in normal mode tape.fast_forward = FALSE; tape.warp_forward = FALSE; - tape.pause_before_end = FALSE; tape.deactivate_display = FALSE; + tape.pause_before_end = FALSE; + 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); } + + DrawVideoDisplayCurrentState(); } + break; default: