#include "IZ_app_input.h" IZ_ProcedureResult IZ_AppHandleSDLEvents(struct IZ_App* app) { SDL_Event e; IZ_InputState* input_state = IZ_AppGetInputState(app); IZ_NetClientState* net_state = IZ_AppGetNetState(app); while (SDL_PollEvent(&e) != 0) { if (e.type == SDL_QUIT) { return 1; } if (e.type == SDL_KEYDOWN) { if (e.key.keysym.sym == SDLK_PAGEUP) { IZ_NetClientConnect( net_state, (IZ_WSClientInitializeParams) { .host = "127.0.0.1", .path = "/", .port = 42069, } ); } else if (e.key.keysym.sym == SDLK_PAGEDOWN) { IZ_NetClientDisconnect(net_state); } else if (e.key.keysym.sym == SDLK_INSERT) { IZ_NetClientSendTextMessage(net_state, "hello", 5); } } IZ_InputHandleSDLEvents(input_state, e); } return 0; } void IZ_AppHandlePortMIDIEvents(struct IZ_App* app) { IZ_InputState* input_state = IZ_AppGetInputState(app); u8 player_index; i32* midi_events_count; u32 midi_event_index; for (player_index = 0; player_index < IZ_PLAYERS; player_index += 1) { if (!input_state->midi_input_state[player_index].device_info) { continue; } midi_events_count = &input_state->midi_input_state[player_index].midi_events_count; *midi_events_count = Pm_Read( input_state->midi_input_state[player_index].stream, // TODO bind buffers and streams to device instead of player input state input_state->midi_input_state[player_index].event_buffer, 1024 ); if (*midi_events_count < 1) { continue; } for (midi_event_index = 0; midi_event_index < *midi_events_count; midi_event_index += 1) { IZ_InputHandlePortMIDIEvents( input_state, input_state->midi_input_state[player_index].event_buffer[midi_event_index] ); } } } IZ_ProcedureResult IZ_AppHandleInputEvents(struct IZ_App* app) { i32 sdl_events_result = IZ_AppHandleSDLEvents(app); if (sdl_events_result) { return sdl_events_result; } IZ_AppHandlePortMIDIEvents(app); return 0; }