diff options
Diffstat (limited to 'sources/TZR_CycleEvents.c')
-rw-r--r-- | sources/TZR_CycleEvents.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/sources/TZR_CycleEvents.c b/sources/TZR_CycleEvents.c index f9f9945..67c2956 100644 --- a/sources/TZR_CycleEvents.c +++ b/sources/TZR_CycleEvents.c @@ -2,7 +2,6 @@ #include "TZR_resource.h" #include "TZR_globals.h" #include <SDL2/SDL_scancode.h> -#include <limits.h> void next_state(TZR_KeyState *keystate) @@ -34,6 +33,7 @@ get_axis(SDL_GameController *gc, float *out, SDL_GameControllerAxis axis) void TZR_CycleEvents(void) { + ___tzr_latest_input.type = TZR_EV_NONE; TZR_ResourcesWatch(); for (int i = 0; i < SDL_NUM_SCANCODES; i++) next_state(&___tzr_keystates[i]); @@ -45,7 +45,13 @@ TZR_CycleEvents(void) ___tzr_scroll_y = 0; TZR_Event e; while (TZR_PollEvent(&e)) - ; + switch (e.type) { + case TZR_EV_KEYDOWN: + case TZR_EV_MOUSEDOWN: + ___tzr_latest_input = e; + default: + break; + } for (size_t i = 0; i < ___tzr_joysticks_size; i++) { TZR_Joystick *const jstick = &___tzr_joysticks[i]; @@ -53,8 +59,11 @@ TZR_CycleEvents(void) continue; for (int k = 0; k < SDL_CONTROLLER_BUTTON_MAX; k++) { if (SDL_GameControllerGetButton(jstick->ptr, k)) { - if (___tzr_joystates[k] != TZR_KEYSTATE_DOWN) + if (___tzr_joystates[k] != TZR_KEYSTATE_DOWN) { ___tzr_joystates[k] = TZR_KEYSTATE_PRESS; + ___tzr_latest_input.type = TZR_EV_GAMECONTROLLERDOWN; + ___tzr_latest_input.button = k; + } } else { if (___tzr_joystates[k] != TZR_KEYSTATE_UP) ___tzr_joystates[k] = TZR_KEYSTATE_RELEASE; |