diff options
| author | raysan5 <[email protected]> | 2021-02-09 12:14:50 +0100 |
|---|---|---|
| committer | raysan5 <[email protected]> | 2021-02-09 12:14:50 +0100 |
| commit | 4e685248711a6b6bc69730d1aaaa21c018b14a77 (patch) | |
| tree | 5fe99cd5f2f2fd5b699d03195232997b1fea19ca /src/core.c | |
| parent | 52d0e86cc61c094604b7f64329dff5bdc3829ae5 (diff) | |
| download | raylib-4e685248711a6b6bc69730d1aaaa21c018b14a77.tar.gz raylib-4e685248711a6b6bc69730d1aaaa21c018b14a77.zip | |
REMOVED: GetGamepadButton() internal func
Diffstat (limited to 'src/core.c')
| -rw-r--r-- | src/core.c | 136 |
1 files changed, 64 insertions, 72 deletions
@@ -512,7 +512,6 @@ static void SwapBuffers(void); // Copy back buffer to f static void InitTimer(void); // Initialize timer static void Wait(float ms); // Wait for some milliseconds (stop program execution) -static int GetGamepadButton(int button); // Get gamepad button generic to all platforms static void PollInputEvents(void); // Register user events #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) @@ -4253,66 +4252,6 @@ static void Wait(float ms) #endif } -// Get gamepad button generic to all platforms -static int GetGamepadButton(int button) -{ - int btn = -1; - -#if defined(PLATFORM_DESKTOP) - switch (button) - { - case GLFW_GAMEPAD_BUTTON_Y: btn = GAMEPAD_BUTTON_RIGHT_FACE_UP; break; - case GLFW_GAMEPAD_BUTTON_B: btn = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break; - case GLFW_GAMEPAD_BUTTON_A: btn = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break; - case GLFW_GAMEPAD_BUTTON_X: btn = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break; - - case GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: btn = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break; - case GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: btn = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break; - - case GLFW_GAMEPAD_BUTTON_BACK: btn = GAMEPAD_BUTTON_MIDDLE_LEFT; break; - case GLFW_GAMEPAD_BUTTON_GUIDE: btn = GAMEPAD_BUTTON_MIDDLE; break; - case GLFW_GAMEPAD_BUTTON_START: btn = GAMEPAD_BUTTON_MIDDLE_RIGHT; break; - - case GLFW_GAMEPAD_BUTTON_DPAD_UP: btn = GAMEPAD_BUTTON_LEFT_FACE_UP; break; - case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: btn = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break; - case GLFW_GAMEPAD_BUTTON_DPAD_DOWN: btn = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break; - case GLFW_GAMEPAD_BUTTON_DPAD_LEFT: btn = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break; - - case GLFW_GAMEPAD_BUTTON_LEFT_THUMB: btn = GAMEPAD_BUTTON_LEFT_THUMB; break; - case GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: btn = GAMEPAD_BUTTON_RIGHT_THUMB; break; - } -#endif - -#if defined(PLATFORM_UWP) - btn = button; // UWP will provide the correct button -#endif - -#if defined(PLATFORM_WEB) - // Gamepad Buttons reference: https://www.w3.org/TR/gamepad/#gamepad-interface - switch (button) - { - case 0: btn = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break; - case 1: btn = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break; - case 2: btn = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break; - case 3: btn = GAMEPAD_BUTTON_RIGHT_FACE_UP; break; - case 4: btn = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break; - case 5: btn = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break; - case 6: btn = GAMEPAD_BUTTON_LEFT_TRIGGER_2; break; - case 7: btn = GAMEPAD_BUTTON_RIGHT_TRIGGER_2; break; - case 8: btn = GAMEPAD_BUTTON_MIDDLE_LEFT; break; - case 9: btn = GAMEPAD_BUTTON_MIDDLE_RIGHT; break; - case 10: btn = GAMEPAD_BUTTON_LEFT_THUMB; break; - case 11: btn = GAMEPAD_BUTTON_RIGHT_THUMB; break; - case 12: btn = GAMEPAD_BUTTON_LEFT_FACE_UP; break; - case 13: btn = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break; - case 14: btn = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break; - case 15: btn = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break; - } -#endif - - return btn; -} - // Poll (store) all input events static void PollInputEvents(void) { @@ -4421,14 +4360,41 @@ static void PollInputEvents(void) for (int k = 0; (buttons != NULL) && (k < GLFW_GAMEPAD_BUTTON_DPAD_LEFT + 1) && (k < MAX_GAMEPAD_BUTTONS); k++) { - const GamepadButton button = GetGamepadButton(k); - - if (buttons[k] == GLFW_PRESS) + GamepadButton button = -1; + + switch (k) { - CORE.Input.Gamepad.currentState[i][button] = 1; - CORE.Input.Gamepad.lastButtonPressed = button; + case GLFW_GAMEPAD_BUTTON_Y: button = GAMEPAD_BUTTON_RIGHT_FACE_UP; break; + case GLFW_GAMEPAD_BUTTON_B: button = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break; + case GLFW_GAMEPAD_BUTTON_A: button = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break; + case GLFW_GAMEPAD_BUTTON_X: button = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break; + + case GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: button = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break; + case GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: button = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break; + + case GLFW_GAMEPAD_BUTTON_BACK: button = GAMEPAD_BUTTON_MIDDLE_LEFT; break; + case GLFW_GAMEPAD_BUTTON_GUIDE: button = GAMEPAD_BUTTON_MIDDLE; break; + case GLFW_GAMEPAD_BUTTON_START: button = GAMEPAD_BUTTON_MIDDLE_RIGHT; break; + + case GLFW_GAMEPAD_BUTTON_DPAD_UP: button = GAMEPAD_BUTTON_LEFT_FACE_UP; break; + case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: button = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break; + case GLFW_GAMEPAD_BUTTON_DPAD_DOWN: button = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break; + case GLFW_GAMEPAD_BUTTON_DPAD_LEFT: button = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break; + + case GLFW_GAMEPAD_BUTTON_LEFT_THUMB: button = GAMEPAD_BUTTON_LEFT_THUMB; break; + case GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: button = GAMEPAD_BUTTON_RIGHT_THUMB; break; + default: break; + } + + if (button != -1) // Check for valid button + { + if (buttons[k] == GLFW_PRESS) + { + CORE.Input.Gamepad.currentState[i][button] = 1; + CORE.Input.Gamepad.lastButtonPressed = button; + } + else CORE.Input.Gamepad.currentState[i][button] = 0; } - else CORE.Input.Gamepad.currentState[i][button] = 0; } // Get current axis state @@ -4477,13 +4443,39 @@ static void PollInputEvents(void) // Register buttons data for every connected gamepad for (int j = 0; (j < gamepadState.numButtons) && (j < MAX_GAMEPAD_BUTTONS); j++) { - const GamepadButton button = GetGamepadButton(j); - if (gamepadState.digitalButton[j] == 1) + GamepadButton button = -1; + + // Gamepad Buttons reference: https://www.w3.org/TR/gamepad/#gamepad-interface + switch (j) { - CORE.Input.Gamepad.currentState[i][button] = 1; - CORE.Input.Gamepad.lastButtonPressed = button; + case 0: button = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break; + case 1: button = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break; + case 2: button = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break; + case 3: button = GAMEPAD_BUTTON_RIGHT_FACE_UP; break; + case 4: button = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break; + case 5: button = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break; + case 6: button = GAMEPAD_BUTTON_LEFT_TRIGGER_2; break; + case 7: button = GAMEPAD_BUTTON_RIGHT_TRIGGER_2; break; + case 8: button = GAMEPAD_BUTTON_MIDDLE_LEFT; break; + case 9: button = GAMEPAD_BUTTON_MIDDLE_RIGHT; break; + case 10: button = GAMEPAD_BUTTON_LEFT_THUMB; break; + case 11: button = GAMEPAD_BUTTON_RIGHT_THUMB; break; + case 12: button = GAMEPAD_BUTTON_LEFT_FACE_UP; break; + case 13: button = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break; + case 14: button = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break; + case 15: button = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break; + default: break; + } + + if (button != -1) // Check for valid button + { + if (gamepadState.digitalButton[j] == 1) + { + CORE.Input.Gamepad.currentState[i][button] = 1; + CORE.Input.Gamepad.lastButtonPressed = button; + } + else CORE.Input.Gamepad.currentState[i][button] = 0; } - else CORE.Input.Gamepad.currentState[i][button] = 0; //TRACELOGD("INPUT: Gamepad %d, button %d: Digital: %d, Analog: %g", gamepadState.index, j, gamepadState.digitalButton[j], gamepadState.analogButton[j]); } |
