#include "loopManager.h" #include "timer.h" LoopManager::LoopManager() {} void LoopManager::processInput() { SDL_Event event; SDL_PollEvent(&event); switch (event.type) { case SDL_QUIT: gameRunning = false; break; case SDL_KEYDOWN: if (event.key.keysym.sym == SDLK_ESCAPE) { gameRunning = false; } break; } } void LoopManager::fixedUpdate() { fprintf(stderr, "fixed update\n"); } void LoopManager::loop() { LoopTimer & timer = LoopTimer::getInstance(); timer.start(); while (gameRunning) { timer.update(); while (timer.getLag() >= timer.getFixedDeltaTime()) { processInput(); fixedUpdate(); timer.advanceFixedUpdate(); } update(); render(); timer.enforceFrameRate(); } window.destroyWindow(); } void LoopManager::setup() { gameRunning = window.initWindow(); LoopTimer::getInstance().start(); LoopTimer::getInstance().setFPS(50); for (int i = 0; i < 2; i++) { GameObject * square = new GameObject("square2", i * 40, i * 40, 20, 20, 0, 0); objectList.push_back(square); } } void LoopManager::render() { fprintf(stderr, "**********render********** \n"); if (gameRunning) { window.render(objectList); } } void LoopManager::update() { fprintf(stderr, "**********normal update********** \n"); LoopTimer & timer = LoopTimer::getInstance(); float delta = timer.getDeltaTime(); for (int i = 0; i < objectList.size(); i++) { objectList[i]->setX(objectList[i]->getX() + 50 * delta); objectList[i]->setY(objectList[i]->getY() + 50 * delta); } }