aboutsummaryrefslogtreecommitdiff
path: root/mwe/gameloop/src/loopManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mwe/gameloop/src/loopManager.cpp')
-rw-r--r--mwe/gameloop/src/loopManager.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/mwe/gameloop/src/loopManager.cpp b/mwe/gameloop/src/loopManager.cpp
new file mode 100644
index 0000000..f7ce886
--- /dev/null
+++ b/mwe/gameloop/src/loopManager.cpp
@@ -0,0 +1,72 @@
+#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);
+ }
+}
+