From 78e5bd2e622204d0deab252d9b2ab90c3095b67d Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sat, 30 Jan 2021 05:30:22 -0500 Subject: Player character can move now --- src/main.cpp | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index e91f8f0..8bd7f89 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,20 +4,51 @@ void loop(Renderer& renderer) { Game game; - game.addSprite(Sprite("../res/lucas.png", renderer)); + int playerSpriteId = game.addSprite(Sprite("../res/lucas.png", renderer)); renderer.render(game); + size_t inputDt = 50; + size_t inputAcc = 0; + + size_t lastTime = SDL_GetTicks(); + for (;;) { + size_t currentTime = SDL_GetTicks(); + size_t frameTime = currentTime - lastTime; + lastTime = currentTime; + SDL_Event e; - while (SDL_PollEvent(&e)) - { - if (e.type == SDL_QUIT) - { + while (SDL_PollEvent(&e)) { + if (e.type == SDL_QUIT) { return; } } + Sprite& playerSprite = game.getSprite(playerSpriteId); + const Uint8* state = SDL_GetKeyboardState(NULL); + + inputAcc += frameTime; + while (inputAcc > inputDt) { + inputAcc -= inputDt; + + if (state[SDL_SCANCODE_LEFT]) { + playerSprite.setX(playerSprite.getX()-8); + } + + if (state[SDL_SCANCODE_RIGHT]) { + playerSprite.setX(playerSprite.getX()+8); + } + + if (state[SDL_SCANCODE_UP]) { + playerSprite.setY(playerSprite.getY()-8); + } + + if (state[SDL_SCANCODE_DOWN]) { + playerSprite.setY(playerSprite.getY()+8); + } + } + renderer.render(game); } } -- cgit 1.4.1