From 683e22c419757744ce853c35d732f607ddb9af16 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Wed, 3 Feb 2021 12:33:03 -0500 Subject: Added input system --- src/main.cpp | 43 ++++++++++++------------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index 3ac4d09..771aa1c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,15 +9,15 @@ #include "camera_system.h" #include "animation_system.h" #include "character_system.h" +#include "input_system.h" -void loop(Renderer& renderer, Mixer& mixer) { +void loop(Renderer& renderer) { Game game; game.emplaceSystem(); - game.emplaceSystem(); - game.emplaceSystem(); + game.emplaceSystem(); game.emplaceSystem(); - - Input keystate; + game.emplaceSystem(); + game.emplaceSystem(); auto map = std::make_unique("../res/map1.tmx", renderer); game.setMap(std::move(map)); @@ -25,6 +25,8 @@ void loop(Renderer& renderer, Mixer& mixer) { int lucasSprite = game.emplaceSprite(); game.getSystem().initSprite(lucasSprite, {32, 32}); game.getSystem().initSprite(lucasSprite, "../res/lucas_anim.txt", renderer); + game.getSprite(lucasSprite).controllable = true; + game.getSystem().initSprite(lucasSprite); int kumaSprite = game.emplaceSprite(); game.getSystem().initSprite(kumaSprite, {32, 32}); @@ -46,8 +48,6 @@ void loop(Renderer& renderer, Mixer& mixer) { renderer.render(game); - Timer inputTimer(33); - size_t lastTime = SDL_GetTicks(); for (;;) { @@ -55,33 +55,15 @@ void loop(Renderer& renderer, Mixer& mixer) { size_t frameTime = currentTime - lastTime; lastTime = currentTime; - SDL_Event e; - while (SDL_PollEvent(&e)) { - if (e.type == SDL_QUIT || (e.type == SDL_KEYDOWN && e.key.keysym.sym == SDLK_ESCAPE)) { - return; - } else if (e.type == SDL_KEYDOWN && (e.key.keysym.sym == SDLK_LSHIFT || e.key.keysym.sym == SDLK_RSHIFT)) { - game.getSystem().beginCrouch(lucasSprite); - } else if (e.type == SDL_KEYUP && (e.key.keysym.sym == SDLK_LSHIFT || e.key.keysym.sym == SDLK_RSHIFT)) { - game.getSystem().endCrouch(lucasSprite); - } - } - - const Uint8* state = SDL_GetKeyboardState(NULL); - keystate.left = state[SDL_SCANCODE_LEFT]; - keystate.right = state[SDL_SCANCODE_RIGHT]; - keystate.up = state[SDL_SCANCODE_UP]; - keystate.down = state[SDL_SCANCODE_DOWN]; - - inputTimer.accumulate(frameTime); - while (inputTimer.step()) { - game.getSystem().moveSprite(lucasSprite, mixer, keystate); - } - for (System& system : game.systems()) { system.tick(frameTime); } renderer.render(game); + + if (game.shouldQuit()) { + return; + } } } @@ -89,9 +71,8 @@ int main(int, char**) { try { Renderer renderer; - Mixer mixer; - loop(renderer, mixer); + loop(renderer); } catch (const sdl_error& ex) { std::cout << "SDL error (" << ex.what() << ")" << std::endl; -- cgit 1.4.1