aboutsummaryrefslogtreecommitdiff
path: root/mwe/gameloop/include
diff options
context:
space:
mode:
Diffstat (limited to 'mwe/gameloop/include')
-rw-r--r--mwe/gameloop/include/eventManager.h1
-rw-r--r--mwe/gameloop/include/gameObject.h30
-rw-r--r--mwe/gameloop/include/loopManager.h25
-rw-r--r--mwe/gameloop/include/timer.h32
-rw-r--r--mwe/gameloop/include/window.h21
5 files changed, 109 insertions, 0 deletions
diff --git a/mwe/gameloop/include/eventManager.h b/mwe/gameloop/include/eventManager.h
new file mode 100644
index 0000000..69c6801
--- /dev/null
+++ b/mwe/gameloop/include/eventManager.h
@@ -0,0 +1 @@
+class EventManager {};
diff --git a/mwe/gameloop/include/gameObject.h b/mwe/gameloop/include/gameObject.h
new file mode 100644
index 0000000..fc7d026
--- /dev/null
+++ b/mwe/gameloop/include/gameObject.h
@@ -0,0 +1,30 @@
+#pragma once
+#include <iostream>
+class GameObject {
+ public:
+ GameObject();
+ GameObject(std::string name, float x, float y, float width, float height, float velX, float velY);
+ std::string getName() const;
+ float getX() const;
+ float getY() const;
+ float getWidth() const;
+ float getHeight() const;
+ float getVelX() const;
+ float getVelY() const;
+ void setName(std::string value);
+ void setX(float value);
+ void setY(float value);
+ void setWidth(float value);
+ void setHeight(float value);
+ void setVelX(float value);
+ void setVelY(float value);
+ int direction;
+ private:
+ std::string name = "";
+ float x = 0;
+ float y = 0;
+ float width = 0;
+ float height = 0;
+ float velX = 0;
+ float velY = 0;
+};
diff --git a/mwe/gameloop/include/loopManager.h b/mwe/gameloop/include/loopManager.h
new file mode 100644
index 0000000..e202423
--- /dev/null
+++ b/mwe/gameloop/include/loopManager.h
@@ -0,0 +1,25 @@
+#pragma once
+#include "gameObject.h"
+#include "window.h"
+#include <SDL2/SDL.h>
+class LoopManager {
+public:
+ LoopManager();
+ void setup();
+ void loop();
+
+private:
+ std::vector<GameObject *> objectList;
+ void processInput();
+ void update();
+ void lateUpdate();
+ void fixedUpdate();
+ void render();
+ bool gameRunning = false;
+ WindowManager window;
+ int timeScale = 1;
+ float accumulator = 0.0;
+ double currentTime;
+ double t = 0.0;
+ double dt = 0.01;
+};
diff --git a/mwe/gameloop/include/timer.h b/mwe/gameloop/include/timer.h
new file mode 100644
index 0000000..ca1e5f3
--- /dev/null
+++ b/mwe/gameloop/include/timer.h
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <SDL2/SDL.h>
+
+class LoopTimer {
+public:
+ static LoopTimer& getInstance();
+ void start();
+ void update();
+ double getDeltaTime() const;
+ int getCurrentTime() const;
+ void advanceFixedUpdate();
+ double getFixedDeltaTime() const;
+ void setFPS(int FPS);
+ int getFPS() const;
+ double getGameScale();
+ void setGameScale(double);
+ void enforceFrameRate();
+ double getLag() const;
+private:
+ LoopTimer();
+ int FPS = 50;
+ double gameScale = 1;
+ double maximumDeltaTime = 0.25;
+ double deltaTime;
+ double frameTargetTime = FPS / 1000;
+ double fixedDeltaTime = 0.01;
+ double elapsedTime;
+ double elapsedFixedTime;
+ double time;
+ uint64_t lastFrameTime;
+};
diff --git a/mwe/gameloop/include/window.h b/mwe/gameloop/include/window.h
new file mode 100644
index 0000000..6806a26
--- /dev/null
+++ b/mwe/gameloop/include/window.h
@@ -0,0 +1,21 @@
+#pragma once
+#include "gameObject.h"
+#include <SDL2/SDL.h>
+#include <iostream>
+#include <vector>
+class WindowManager {
+public:
+ WindowManager();
+ virtual ~WindowManager();
+ void render(std::vector<GameObject *> objects);
+ bool initWindow();
+ void destroyWindow();
+
+ SDL_Renderer * getRenderer();
+
+private:
+ const int SCREEN_WIDTH = 800;
+ const int SCREEN_HEIGHT = 600;
+ SDL_Window * window = NULL;
+ SDL_Renderer * renderer = NULL;
+};