X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fevents.c;h=80917b02007916c1b8957cc440b046b75bd32b3b;hp=64fda8081da0fab274d5f3008bb35369d4a5f486;hb=b86e1c575b39198b1bc5a6038afec5d8d6fe26c3;hpb=6746a99c1d7348748c06d457f8496b4253bb7c84 diff --git a/src/events.c b/src/events.c index 64fda808..80917b02 100644 --- a/src/events.c +++ b/src/events.c @@ -378,6 +378,8 @@ void ClearPlayerAction() key_joystick_mapping = 0; for (i = 0; i < MAX_PLAYERS; i++) stored_player[i].action = 0; + + ClearJoystickState(); } void SleepWhileUnmapped() @@ -1540,9 +1542,11 @@ void HandleKey(Key key, int key_status) int i; #if defined(TARGET_SDL2) - /* map special "play/pause" media key to default key for play/pause actions */ + /* map special keys (media keys / remote control buttons) to default keys */ if (key == KSYM_PlayPause) key = KSYM_space; + else if (key == KSYM_Select) + key = KSYM_Return; #endif HandleSpecialGameControllerKeys(key, key_status); @@ -1556,6 +1560,9 @@ void HandleKey(Key key, int key_status) static boolean element_dropped[MAX_PLAYERS] = { FALSE,FALSE,FALSE,FALSE }; int pnr; + /* initialize unifying snap and drop buttons (EM engine) */ + game_em.use_single_button = game_em.use_single_button_initial; + for (pnr = 0; pnr < MAX_PLAYERS; pnr++) { byte key_action = 0; @@ -1602,6 +1609,9 @@ void HandleKey(Key key, int key_status) if (tape.single_step && tape.recording && tape.pausing) { + /* do not unify snap and drop buttons in single-step mode (EM engine) */ + game_em.use_single_button = FALSE; + if (key_status == KEY_PRESSED && key_action & KEY_MOTION) { TapeTogglePause(TAPE_TOGGLE_AUTOMATIC); @@ -1619,7 +1629,6 @@ void HandleKey(Key key, int key_status) if (level.game_engine_type == GAME_ENGINE_TYPE_EM || level.game_engine_type == GAME_ENGINE_TYPE_SP) { - if (level.game_engine_type == GAME_ENGINE_TYPE_SP && getRedDiskReleaseFlag_SP() == 0) stored_player[pnr].action &= ~KEY_BUTTON_DROP;