2
0
Эх сурвалжийг харах

Implemented GetGamepadName() for emscripten (#1986)

* implemented GetGamepadName for emscripten

* updated gamepad to use existing name as arary

* removed unnecessary platform_web check
Neil Barkhina 4 жил өмнө
parent
commit
e9d3d4fa1f
1 өөрчлөгдсөн 12 нэмэгдсэн , 5 устгасан
  1. 12 5
      src/core.c

+ 12 - 5
src/core.c

@@ -456,10 +456,10 @@ typedef struct CoreData {
             char currentButtonState[MAX_GAMEPADS][MAX_GAMEPAD_BUTTONS];     // Current gamepad buttons state
             char currentButtonState[MAX_GAMEPADS][MAX_GAMEPAD_BUTTONS];     // Current gamepad buttons state
             char previousButtonState[MAX_GAMEPADS][MAX_GAMEPAD_BUTTONS];    // Previous gamepad buttons state
             char previousButtonState[MAX_GAMEPADS][MAX_GAMEPAD_BUTTONS];    // Previous gamepad buttons state
             float axisState[MAX_GAMEPADS][MAX_GAMEPAD_AXIS];                // Gamepad axis state
             float axisState[MAX_GAMEPADS][MAX_GAMEPAD_AXIS];                // Gamepad axis state
-#if defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
+#if defined(PLATFORM_RPI) || defined(PLATFORM_DRM) || defined(PLATFORM_WEB)
             pthread_t threadId;             // Gamepad reading thread id
             pthread_t threadId;             // Gamepad reading thread id
             int streamId[MAX_GAMEPADS];     // Gamepad device file descriptor
             int streamId[MAX_GAMEPADS];     // Gamepad device file descriptor
-            char name[64];                  // Gamepad name holder
+            char name[MAX_GAMEPADS][64];                  // Gamepad name holder
 #endif
 #endif
         } Gamepad;
         } Gamepad;
     } Input;
     } Input;
@@ -3273,8 +3273,11 @@ const char *GetGamepadName(int gamepad)
     else return NULL;
     else return NULL;
 #endif
 #endif
 #if defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
 #if defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
-    if (CORE.Input.Gamepad.ready[gamepad]) ioctl(CORE.Input.Gamepad.streamId[gamepad], JSIOCGNAME(64), &CORE.Input.Gamepad.name);
-    return CORE.Input.Gamepad.name;
+    if (CORE.Input.Gamepad.ready[gamepad]) ioctl(CORE.Input.Gamepad.streamId[gamepad], JSIOCGNAME(64), &CORE.Input.Gamepad.name[gamepad]);
+    return CORE.Input.Gamepad.name[gamepad];
+#endif
+#if defined(PLATFORM_WEB)
+    return CORE.Input.Gamepad.name[gamepad];
 #endif
 #endif
     return NULL;
     return NULL;
 }
 }
@@ -5400,7 +5403,11 @@ static EM_BOOL EmscriptenGamepadCallback(int eventType, const EmscriptenGamepadE
     for (int i = 0; i < gamepadEvent->numButtons; ++i) TRACELOGD("Button %d: Digital: %d, Analog: %g", i, gamepadEvent->digitalButton[i], gamepadEvent->analogButton[i]);
     for (int i = 0; i < gamepadEvent->numButtons; ++i) TRACELOGD("Button %d: Digital: %d, Analog: %g", i, gamepadEvent->digitalButton[i], gamepadEvent->analogButton[i]);
     */
     */
 
 
-    if ((gamepadEvent->connected) && (gamepadEvent->index < MAX_GAMEPADS)) CORE.Input.Gamepad.ready[gamepadEvent->index] = true;
+    if ((gamepadEvent->connected) && (gamepadEvent->index < MAX_GAMEPADS))
+    {
+        CORE.Input.Gamepad.ready[gamepadEvent->index] = true;
+        sprintf(CORE.Input.Gamepad.name[gamepadEvent->index],"%s",gamepadEvent->id);
+    } 
     else CORE.Input.Gamepad.ready[gamepadEvent->index] = false;
     else CORE.Input.Gamepad.ready[gamepadEvent->index] = false;
 
 
     // TODO: Test gamepadEvent->index
     // TODO: Test gamepadEvent->index