X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=000744c9e177a90e8dff21dcd2f7ffc78ae66ff1;hb=61b7f6a8c2289ed8f3e6230a2553e08f1aa53380;hp=dd3e88af8721f49039488aba261eb8bc3f51c9ea;hpb=457abe4e8de9b10096af75c026409ab068570b7f;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index dd3e88af..000744c9 100644 --- a/src/events.c +++ b/src/events.c @@ -1675,6 +1675,11 @@ static void HandleKeysSpecial(Key key) { InsertSolutionTape(); } + else if (is_string_suffix(cheat_input, ":play-solution-tape") || + is_string_suffix(cheat_input, ":pst")) + { + PlaySolutionTape(); + } else if (is_string_suffix(cheat_input, ":reload-graphics") || is_string_suffix(cheat_input, ":rg")) { @@ -2418,24 +2423,38 @@ void HandleJoystick() void HandleSpecialGameControllerButtons(Event *event) { #if defined(TARGET_SDL2) + int key_status; + Key key; + switch (event->type) { case SDL_CONTROLLERBUTTONDOWN: - if (event->cbutton.button == SDL_CONTROLLER_BUTTON_START) - HandleKey(KSYM_space, KEY_PRESSED); - else if (event->cbutton.button == SDL_CONTROLLER_BUTTON_BACK) - HandleKey(KSYM_Escape, KEY_PRESSED); - + key_status = KEY_PRESSED; break; case SDL_CONTROLLERBUTTONUP: - if (event->cbutton.button == SDL_CONTROLLER_BUTTON_START) - HandleKey(KSYM_space, KEY_RELEASED); - else if (event->cbutton.button == SDL_CONTROLLER_BUTTON_BACK) - HandleKey(KSYM_Escape, KEY_RELEASED); + key_status = KEY_RELEASED; + break; + + default: + return; + } + switch (event->cbutton.button) + { + case SDL_CONTROLLER_BUTTON_START: + key = KSYM_space; break; + + case SDL_CONTROLLER_BUTTON_BACK: + key = KSYM_Escape; + break; + + default: + return; } + + HandleKey(key, key_status); #endif }