diff --git a/include/input.h b/include/input.h index 1be9403..806a716 100644 --- a/include/input.h +++ b/include/input.h @@ -1,6 +1,9 @@ #pragma once +#include + + struct input_state { bool window_closed; @@ -11,6 +14,10 @@ struct input_state bool down; }; +void +inputProcessEvent(input_state* is, SDL_Event& e); + +// NOTE: convenience function that provides a while(SDL_PollEvents()) loop void inputProcessEvents(input_state* is); diff --git a/src/input.cpp b/src/input.cpp index 4ff1248..1f2ded3 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -1,39 +1,46 @@ -#include +#include #include "input.h" +void +inputProcessEvent(input_state* is, SDL_Event& e) +{ + assert(is != nullptr); + + switch (e.type) { + case SDL_QUIT: + is->window_closed = true; + break; + case SDL_KEYDOWN: + switch (e.key.keysym.sym) { + case SDLK_ESCAPE: is->escape = true; break; + case SDLK_LEFT: is->left = true; break; + case SDLK_RIGHT: is->right = true; break; + case SDLK_UP: is->up = true; break; + case SDLK_DOWN: is->down = true; break; + } + break; + case SDL_KEYUP: + switch (e.key.keysym.sym) { + case SDLK_ESCAPE: is->escape = false; break; + case SDLK_LEFT: is->left = false; break; + case SDLK_RIGHT: is->right = false; break; + case SDLK_UP: is->up = false; break; + case SDLK_DOWN: is->down = false; break; + } + break; + default: break; + } +} + void inputProcessEvents(input_state* is) { SDL_Event e; - while (SDL_PollEvent(&e)) { - switch (e.type) { - case SDL_QUIT: - is->window_closed = true; - break; - case SDL_KEYDOWN: - switch (e.key.keysym.sym) { - case SDLK_ESCAPE: is->escape = true; break; - case SDLK_LEFT: is->left = true; break; - case SDLK_RIGHT: is->right = true; break; - case SDLK_UP: is->up = true; break; - case SDLK_DOWN: is->down = true; break; - } - break; - case SDL_KEYUP: - switch (e.key.keysym.sym) { - case SDLK_ESCAPE: is->escape = false; break; - case SDLK_LEFT: is->left = false; break; - case SDLK_RIGHT: is->right = false; break; - case SDLK_UP: is->up = false; break; - case SDLK_DOWN: is->down = false; break; - } - break; - default: break; - } - } + while (SDL_PollEvent(&e)) + inputProcessEvent(is, e); }