From ef112710495003efeb5359e6d5c160742f570376 Mon Sep 17 00:00:00 2001 From: cinnaboot Date: Tue, 16 Mar 2021 15:46:08 -0400 Subject: [PATCH] break out SDL_PollEvents() while loop to new function --- include/input.h | 7 ++++++ src/input.cpp | 61 +++++++++++++++++++++++++++---------------------- 2 files changed, 41 insertions(+), 27 deletions(-) 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); }