#ifndef _fencer_input_h #define _fencer_input_h #include "list.h" #include "input_axis.h" #include #include #include #include struct PlayerInput; typedef struct InputListener { void* self; InputDelegateFn fn; InputAxis axis; } InputListener; typedef enum InputDeviceType { InputDevice_Gamepad, InputDevice_KBM } InputDeviceType; typedef struct InputDevice { List* listeners; InputDeviceType type; int id; union { struct { const uint8_t* state; } keyboard; struct { SDL_JoystickID id; SDL_GameController* controller; } gamepad; }; } InputDevice; extern void input_init(); extern void input_clean(); // handle an input event extern void input_handle_event(SDL_Event event); extern void input_device_set_listeners(InputDevice* self, List* listeners); extern InputDevice* input_get_device_by_id(int id); #endif // !_fencer_input_h