added handling 'back' and 'start' buttons on game controllers
[rocksndiamonds.git] / src / tools.c
index 6c990cbc2cb956ff1cf009e92bfef32a56f4493d..84afef183185e8b37eed8454fb71879f9b059cbd 100644 (file)
@@ -3886,6 +3886,19 @@ static int RequestHandleEvents(unsigned int req_state)
            break;
          }
 
+#if defined(TARGET_SDL2)
+      case SDL_WINDOWEVENT:
+       HandleWindowEvent((WindowEvent *) &event);
+       break;
+
+      case SDL_APP_WILLENTERBACKGROUND:
+      case SDL_APP_DIDENTERBACKGROUND:
+      case SDL_APP_WILLENTERFOREGROUND:
+      case SDL_APP_DIDENTERFOREGROUND:
+       HandlePauseResumeEvent((PauseResumeEvent *) &event);
+       break;
+#endif
+
          case EVENT_KEYPRESS:
          {
            Key key = GetEventKey((KeyEvent *)&event, TRUE);
@@ -3926,6 +3939,34 @@ static int RequestHandleEvents(unsigned int req_state)
            ClearPlayerAction();
            break;
 
+#if defined(TARGET_SDL2)
+         case SDL_CONTROLLERBUTTONDOWN:
+           switch (event.cbutton.button)
+           {
+             case SDL_CONTROLLER_BUTTON_A:
+             case SDL_CONTROLLER_BUTTON_X:
+             case SDL_CONTROLLER_BUTTON_LEFTSHOULDER:
+               result = 1;
+               break;
+
+             case SDL_CONTROLLER_BUTTON_B:
+             case SDL_CONTROLLER_BUTTON_Y:
+             case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER:
+             case SDL_CONTROLLER_BUTTON_BACK:
+               result = 0;
+               break;
+           }
+
+           if (req_state & REQ_PLAYER)
+             result = 0;
+
+           break;
+
+         case SDL_CONTROLLERBUTTONUP:
+           ClearPlayerAction();
+           break;
+#endif
+
          default:
            HandleOtherEvents(&event);
            break;
@@ -8534,6 +8575,8 @@ void SetAnimStatus(int anim_status_new)
 {
   if (anim_status_new == GAME_MODE_MAIN)
     anim_status_new = GAME_MODE_PSEUDO_MAINONLY;
+  else if (anim_status_new == GAME_MODE_SCORES)
+    anim_status_new = GAME_MODE_PSEUDO_SCORESOLD;
 
   global.anim_status_next = anim_status_new;