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 #pragma once
#include <SDL2/SDL.h>
struct input_state struct input_state
{ {
bool window_closed; bool window_closed;
@ -11,6 +14,10 @@ struct input_state
bool down; bool down;
}; };
void
inputProcessEvent(input_state* is, SDL_Event& e);
// NOTE: convenience function that provides a while(SDL_PollEvents()) loop
void void
inputProcessEvents(input_state* is); inputProcessEvents(input_state* is);

61
src/input.cpp

@ -1,39 +1,46 @@
#include <SDL2/SDL.h> #include <cassert>
#include "input.h" #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 void
inputProcessEvents(input_state* is) inputProcessEvents(input_state* is)
{ {
SDL_Event e; SDL_Event e;
while (SDL_PollEvent(&e)) { while (SDL_PollEvent(&e))
switch (e.type) { inputProcessEvent(is, e);
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;
}
}
} }

Loading…
Cancel
Save