Browse Source

break out SDL_PollEvents() while loop to new function

render_group_fix
cinnaboot 5 years ago
parent
commit
ef11271049
  1. 7
      include/input.h
  2. 61
      src/input.cpp

7
include/input.h

@ -1,6 +1,9 @@
#pragma once
#include <SDL2/SDL.h>
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);

61
src/input.cpp

@ -1,39 +1,46 @@
#include <SDL2/SDL.h>
#include <cassert>
#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);
}

Loading…
Cancel
Save