#include #include "renderer.h" #include "game.h" #include "party.h" #include "timer.h" void loop(Renderer& renderer) { Game game; Input keystate; int lucasSprite = game.addSprite(Sprite("../res/lucas_anim.txt", renderer)); int kumaSprite = game.addSprite(Sprite("../res/kuma_anim.txt", renderer)); int dusterSprite = game.addSprite(Sprite("../res/duster_anim.txt", renderer)); int boneySprite = game.addSprite(Sprite("../res/boney_anim.txt", renderer)); game.moveSprite(lucasSprite, {32,32}); Party party; party.addMember(game, lucasSprite); party.addMember(game, kumaSprite); party.addMember(game, dusterSprite); party.addMember(game, boneySprite); renderer.render(game); Timer inputTimer(50); Timer animTimer(1000/5);//30fps * 1000 t/s; 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 || (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)) { party.beginCrouch(game); } else if (e.type == SDL_KEYUP && (e.key.keysym.sym == SDLK_LSHIFT || e.key.keysym.sym == SDLK_RSHIFT)) { party.endCrouch(game); } } 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()) { party.move(game, keystate); } animTimer.accumulate(frameTime); while (animTimer.step()) { game.tickSpriteAnim(); } renderer.render(game); } } int main(int, char**) { try { Renderer renderer; loop(renderer); } catch (const sdl_error& ex) { std::cout << "SDL error (" << ex.what() << ")" << std::endl; } return 0; }