From: Holger Schemel Date: Tue, 14 Jun 2016 09:14:07 +0000 (+0200) Subject: changed behaviour of key shortcut to start/pause/continue game X-Git-Tag: 4.0.0.0-rc3~9 X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=commitdiff_plain;h=0f93b05731f58802973324200cfd8aecb11a4786 changed behaviour of key shortcut to start/pause/continue game --- diff --git a/src/events.c b/src/events.c index dcb957a5..843fb197 100644 --- a/src/events.c +++ b/src/events.c @@ -1451,7 +1451,7 @@ void HandleKey(Key key, int key_status) else if (key == setup.shortcut.load_game) TapeQuickLoad(); else if (key == setup.shortcut.toggle_pause) - TapeTogglePause(TAPE_TOGGLE_MANUAL); + TapeTogglePause(TAPE_TOGGLE_MANUAL | TAPE_TOGGLE_PLAY_PAUSE); HandleTapeButtonKeys(key); HandleSoundButtonKeys(key); diff --git a/src/game.c b/src/game.c index a452586d..f7ff3eab 100644 --- a/src/game.c +++ b/src/game.c @@ -15180,7 +15180,7 @@ static void HandleGameButtonsExt(int id, int button) SendToServer_ContinuePlaying(); else #endif - TapeTogglePause(TAPE_TOGGLE_MANUAL); + TapeTogglePause(TAPE_TOGGLE_MANUAL | TAPE_TOGGLE_PLAY_PAUSE); } break; diff --git a/src/tape.c b/src/tape.c index 919bd418..8087860b 100644 --- a/src/tape.c +++ b/src/tape.c @@ -672,11 +672,21 @@ void TapeRecordAction(byte action_raw[MAX_PLAYERS]) } } -void TapeTogglePause(boolean toggle_manual) +void TapeTogglePause(boolean toggle_mode) { + if (tape.playing && tape.pausing && (toggle_mode & TAPE_TOGGLE_PLAY_PAUSE)) + { + // continue playing in normal mode + tape.fast_forward = FALSE; + tape.warp_forward = FALSE; + tape.deactivate_display = FALSE; + + tape.pause_before_end = FALSE; + } + tape.pausing = !tape.pausing; - if (tape.single_step && toggle_manual) + if (tape.single_step && (toggle_mode & TAPE_TOGGLE_MANUAL)) tape.single_step = FALSE; DrawVideoDisplayCurrentState(); @@ -1367,14 +1377,7 @@ static void HandleTapeButtonsExt(int id) { if (tape.pausing) /* PAUSE -> PLAY */ { - // continue playing in normal mode - tape.fast_forward = FALSE; - tape.warp_forward = FALSE; - tape.deactivate_display = FALSE; - - tape.pause_before_end = FALSE; - - TapeTogglePause(TAPE_TOGGLE_MANUAL); + TapeTogglePause(TAPE_TOGGLE_MANUAL | TAPE_TOGGLE_PLAY_PAUSE); } else if (!tape.fast_forward) /* PLAY -> FFWD */ { diff --git a/src/tape.h b/src/tape.h index 03849d0a..cf6f4dfd 100644 --- a/src/tape.h +++ b/src/tape.h @@ -14,8 +14,9 @@ /* values for TapeTogglePause() */ -#define TAPE_TOGGLE_MANUAL TRUE -#define TAPE_TOGGLE_AUTOMATIC FALSE +#define TAPE_TOGGLE_AUTOMATIC 0 +#define TAPE_TOGGLE_MANUAL (1 << 0) +#define TAPE_TOGGLE_PLAY_PAUSE (1 << 1) /* values for tape properties */ #define MAX_TAPE_LEN (1000 * FRAMES_PER_SECOND) /* max.time x fps */