diff --git a/src/game.c b/src/game.c index 19b98d7..78b230f 100644 --- a/src/game.c +++ b/src/game.c @@ -1,6 +1,7 @@ #include #include #include "SDL2/SDL.h" +#include "SDL2/SDL_timer.h" #include "GL/glew.h" #include "SDL2/SDL_opengl.h" #include "game.h" @@ -31,55 +32,9 @@ GameState *Game_New() return gs; } -static void HandleKeyDown(GameState *gs, SDL_KeyCode sym) -{ - switch (sym) - { - case SDLK_ESCAPE: - gs->running = false; - break; - case SDLK_BACKQUOTE: - SDL_bool currentMode = SDL_GetRelativeMouseMode(); - SDL_SetRelativeMouseMode(currentMode == SDL_FALSE ? SDL_TRUE : SDL_FALSE); - break; - case SDLK_F11: - { - Uint32 windowFlags = SDL_GetWindowFlags(gs->window); - if ((windowFlags & SDL_WINDOW_FULLSCREEN_DESKTOP) != 0) windowFlags = 0; - else windowFlags = SDL_WINDOW_FULLSCREEN_DESKTOP; - SDL_SetWindowFullscreen(gs->window, windowFlags); - } - break; - } -} - -static void HandleKeyUp(GameState *gs, SDL_KeyCode sym) -{ -} - void Game_Update(GameState *gs) { - SDL_Event sdlEvent; - - while (SDL_PollEvent(&sdlEvent)) - { - switch (sdlEvent.type) - { - case SDL_QUIT: - printf("Event: SDL_QUIT\n"); - gs->running = false; - break; - case SDL_KEYDOWN: - if (sdlEvent.key.repeat == 0) - { - HandleKeyDown(gs, sdlEvent.key.keysym.sym); - } - break; - case SDL_KEYUP: - HandleKeyUp(gs, sdlEvent.key.keysym.sym); - break; - } - } + SDL_Delay(100); } void Game_Destroy(GameState *gs) diff --git a/src/game.h b/src/game.h index 8cfb966..52ecff9 100644 --- a/src/game.h +++ b/src/game.h @@ -1,3 +1,5 @@ +#pragma once + #include typedef struct diff --git a/src/input.c b/src/input.c new file mode 100644 index 0000000..7a1bd02 --- /dev/null +++ b/src/input.c @@ -0,0 +1,54 @@ +#include "SDL2/SDL.h" +#include "input.h" +#include "game.h" + +static void HandleKeyDown(GameState *gs, SDL_KeyCode sym) +{ + switch (sym) + { + case SDLK_ESCAPE: + gs->running = false; + break; + case SDLK_BACKQUOTE: + SDL_bool currentMode = SDL_GetRelativeMouseMode(); + SDL_SetRelativeMouseMode(currentMode == SDL_FALSE ? SDL_TRUE : SDL_FALSE); + break; + case SDLK_F11: + { + Uint32 windowFlags = SDL_GetWindowFlags(gs->window); + if ((windowFlags & SDL_WINDOW_FULLSCREEN_DESKTOP) != 0) windowFlags = 0; + else windowFlags = SDL_WINDOW_FULLSCREEN_DESKTOP; + SDL_SetWindowFullscreen(gs->window, windowFlags); + } + break; + } +} + +static void HandleKeyUp(GameState *gs, SDL_KeyCode sym) +{ +} + +void Input_Poll(GameState *gs) +{ + SDL_Event sdlEvent; + + while (SDL_PollEvent(&sdlEvent)) + { + switch (sdlEvent.type) + { + case SDL_QUIT: + printf("Event: SDL_QUIT\n"); + gs->running = false; + break; + case SDL_KEYDOWN: + if (sdlEvent.key.repeat == 0) + { + HandleKeyDown(gs, sdlEvent.key.keysym.sym); + } + break; + case SDL_KEYUP: + HandleKeyUp(gs, sdlEvent.key.keysym.sym); + break; + } + } +} diff --git a/src/input.h b/src/input.h new file mode 100644 index 0000000..028dfa4 --- /dev/null +++ b/src/input.h @@ -0,0 +1,5 @@ +#pragma once + +#include "game.h" + +void Input_Poll(GameState *gs); diff --git a/src/main.c b/src/main.c index fc22242..ac3e631 100644 --- a/src/main.c +++ b/src/main.c @@ -1,7 +1,7 @@ #include #include "SDL2/SDL.h" -#include "SDL2/SDL_timer.h" #include "game.h" +#include "input.h" int main(int argc, char* argv[]) { @@ -16,8 +16,8 @@ int main(int argc, char* argv[]) while (gs->running) { + Input_Poll(gs); Game_Update(gs); - SDL_Delay(100); } printf("Shutting down...\n");