diff options
Diffstat (limited to 'mwe/gameloop/src/loopManager.cpp')
-rw-r--r-- | mwe/gameloop/src/loopManager.cpp | 97 |
1 files changed, 60 insertions, 37 deletions
diff --git a/mwe/gameloop/src/loopManager.cpp b/mwe/gameloop/src/loopManager.cpp index cb532cc..dde3cef 100644 --- a/mwe/gameloop/src/loopManager.cpp +++ b/mwe/gameloop/src/loopManager.cpp @@ -1,69 +1,92 @@ #include "loopManager.h" #include "timer.h" -LoopManager::LoopManager() {} -void LoopManager::processInput() { +LoopManager::LoopManager(){ +} +void LoopManager::processInput(){ SDL_Event event; SDL_PollEvent(&event); - switch (event.type) { + switch(event.type){ case SDL_QUIT: gameRunning = false; break; case SDL_KEYDOWN: - if (event.key.keysym.sym == SDLK_ESCAPE) { + if(event.key.keysym.sym == SDLK_ESCAPE){ gameRunning = false; + }else if(event.key.keysym.sym == SDLK_i){ + LoopTimer::getInstance().setGameScale(LoopTimer::getInstance().getGameScale() + 0.1); + }else if(event.key.keysym.sym == SDLK_k){ + LoopTimer::getInstance().setGameScale(LoopTimer::getInstance().getGameScale() - 0.1); } - break; + + break; } } -void LoopManager::fixedUpdate() { fprintf(stderr, "fixed update\n"); } +void LoopManager::fixedUpdate(){ + fprintf(stderr,"fixed update\n"); +} void LoopManager::loop() { - LoopTimer & timer = LoopTimer::getInstance(); - timer.start(); + LoopTimer& timer = LoopTimer::getInstance(); + timer.start(); - while (gameRunning) { - timer.update(); + while (gameRunning) { + timer.update(); - while (timer.getLag() >= timer.getFixedDeltaTime()) { - processInput(); - fixedUpdate(); - timer.advanceFixedUpdate(); - } + while (timer.getLag() >= timer.getFixedDeltaTime()) { + processInput(); + fixedUpdate(); + timer.advanceFixedUpdate(); + } - update(); - render(); + update(); + render(); - timer.enforceFrameRate(); - } + timer.enforceFrameRate(); + } - window.destroyWindow(); + window.destroyWindow(); } -void LoopManager::setup() { +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); + LoopTimer::getInstance().setFPS(500); + + for(int i = 1; i < 3;i++){ + GameObject* square = new GameObject("square2",i*60,i*60,20,20,0,0); objectList.push_back(square); } } -void LoopManager::render() { - fprintf(stderr, "**********render********** \n"); - if (gameRunning) { +void LoopManager::render(){ + fprintf(stderr,"**********render********** \n"); + if(gameRunning){ window.render(objectList); } } void LoopManager::update() { - fprintf(stderr, "**********normal update********** \n"); - LoopTimer & timer = LoopTimer::getInstance(); + fprintf(stderr, "********** normal update ********** \n"); + LoopTimer& timer = LoopTimer::getInstance(); + + float delta = timer.getDeltaTime(); + for (int i = 0; i < objectList.size(); i++) { + GameObject* obj = objectList[i]; + + // Move the object based on its direction + if (obj->direction == 1) { + obj->setX(obj->getX() + 50 * delta); + } else { + obj->setX(obj->getX() - 50 * delta); + } + - 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); - } + if (obj->getX() > 500) { + obj->setX(500); + obj->direction = 0; // Switch direction to left + } else if (obj->getX() < 50) { + obj->setX(50); // Clamp the position to the boundary + obj->direction = 1; // Switch direction to right + } + } } + + |