aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWBoerenkamps <wrj.boerenkamps@student.avans.nl>2024-09-16 10:16:24 +0200
committerWBoerenkamps <wrj.boerenkamps@student.avans.nl>2024-09-16 10:16:24 +0200
commit7eafe293868d5d3875d0bec147e22a266e4ec86c (patch)
tree176d606ec019f1388d6865dc6b5ea8c6a2f7b648
parent83568a442d494078a662276969a4ed9b789dc0c7 (diff)
trying out engine controlled game loops
-rw-r--r--gameloop/CMakeLists.txt26
-rw-r--r--gameloop/imgs/demo.bmpbin0 -> 7998698 bytes
-rw-r--r--gameloop/imgs/demo.jpgbin0 -> 903706 bytes
-rw-r--r--gameloop/include/eventManager.h4
-rw-r--r--gameloop/include/loopManager.h18
-rw-r--r--gameloop/include/window.h22
-rw-r--r--gameloop/src/eventManager.cpp0
-rw-r--r--gameloop/src/loopManager.cpp37
-rw-r--r--gameloop/src/main.cpp17
-rw-r--r--gameloop/src/window.cpp48
10 files changed, 172 insertions, 0 deletions
diff --git a/gameloop/CMakeLists.txt b/gameloop/CMakeLists.txt
new file mode 100644
index 0000000..16cbcf3
--- /dev/null
+++ b/gameloop/CMakeLists.txt
@@ -0,0 +1,26 @@
+cmake_minimum_required(VERSION 3.5)
+project(gameloop)
+
+# Set the C++ standard (optional, but good practice)
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED True)
+
+# Find the SDL2 package
+find_package(SDL2 REQUIRED)
+
+# Add your executable
+set(SOURCES
+ src/loopManager
+ src/window.cpp
+ src/main.cpp
+ src/eventManager.cpp
+)
+
+add_executable(gameloop ${SOURCES})
+
+# Link the SDL2 library to your project
+target_link_libraries(gameloop ${SDL2_LIBRARIES})
+
+# Include SDL2 header files and project headers
+target_include_directories(gameloop PRIVATE ${SDL2_INCLUDE_DIRS})
+target_include_directories(gameloop PRIVATE ${CMAKE_SOURCE_DIR}/include)
diff --git a/gameloop/imgs/demo.bmp b/gameloop/imgs/demo.bmp
new file mode 100644
index 0000000..65354fe
--- /dev/null
+++ b/gameloop/imgs/demo.bmp
Binary files differ
diff --git a/gameloop/imgs/demo.jpg b/gameloop/imgs/demo.jpg
new file mode 100644
index 0000000..f534e1b
--- /dev/null
+++ b/gameloop/imgs/demo.jpg
Binary files differ
diff --git a/gameloop/include/eventManager.h b/gameloop/include/eventManager.h
new file mode 100644
index 0000000..2aa0a68
--- /dev/null
+++ b/gameloop/include/eventManager.h
@@ -0,0 +1,4 @@
+class EventManager
+{
+
+};
diff --git a/gameloop/include/loopManager.h b/gameloop/include/loopManager.h
new file mode 100644
index 0000000..03b07a9
--- /dev/null
+++ b/gameloop/include/loopManager.h
@@ -0,0 +1,18 @@
+#pragma once
+#include <SDL2/SDL.h>
+#include "window.h"
+class LoopManager{
+ public:
+ LoopManager();
+ void setup();
+ void loop();
+ private:
+
+
+ void processInput();
+ void update();
+ void render();
+ bool gameRunning;
+ WindowManager window;
+
+};
diff --git a/gameloop/include/window.h b/gameloop/include/window.h
new file mode 100644
index 0000000..b4f2b78
--- /dev/null
+++ b/gameloop/include/window.h
@@ -0,0 +1,22 @@
+#pragma once
+#include <SDL2/SDL.h>
+class WindowManager{
+ public:
+ WindowManager();
+ virtual ~WindowManager();
+ bool loadMedia();
+ void update();
+ bool init();
+ void close();
+ bool initWindow();
+ void destroyWindow();
+ SDL_Renderer* getRenderer();
+ private:
+ //Loads media
+ //Frees media and shuts down SDL
+
+ const int SCREEN_WIDTH = 800;
+ const int SCREEN_HEIGHT = 600;
+ SDL_Window* window = NULL;
+ SDL_Renderer* renderer = NULL;
+};
diff --git a/gameloop/src/eventManager.cpp b/gameloop/src/eventManager.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gameloop/src/eventManager.cpp
diff --git a/gameloop/src/loopManager.cpp b/gameloop/src/loopManager.cpp
new file mode 100644
index 0000000..ef2decf
--- /dev/null
+++ b/gameloop/src/loopManager.cpp
@@ -0,0 +1,37 @@
+#include "loopManager.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::loop(){
+ while(gameRunning){
+ //processInput();
+ //update();
+ //render();
+ }
+ window.destroyWindow();
+}
+void LoopManager::setup(){
+ gameRunning = window.initWindow();
+}
+void LoopManager::render(){
+ if(gameRunning){
+ SDL_SetRenderDrawColor(window.getRenderer(),255,0,0,255);
+ SDL_RenderClear(window.getRenderer());
+ }
+}
+void LoopManager::update(){
+
+}
diff --git a/gameloop/src/main.cpp b/gameloop/src/main.cpp
new file mode 100644
index 0000000..76d0c84
--- /dev/null
+++ b/gameloop/src/main.cpp
@@ -0,0 +1,17 @@
+//Using SDL and standard IO
+#include <SDL2/SDL.h>
+#include <stdio.h>
+//#include "window.h"
+#include "loopManager.h"
+//Screen dimension constants
+
+
+//Starts up SDL and creates window
+
+int main( int argc, char* args[] )
+{
+ LoopManager gameLoop;
+ gameLoop.setup();
+ gameLoop.loop();
+ return 0;
+}
diff --git a/gameloop/src/window.cpp b/gameloop/src/window.cpp
new file mode 100644
index 0000000..11424dd
--- /dev/null
+++ b/gameloop/src/window.cpp
@@ -0,0 +1,48 @@
+#include "window.h"
+
+WindowManager::WindowManager(){
+ if( !initWindow() )
+ {
+ printf( "Failed to initialize!\n" );
+ }
+}
+WindowManager::~WindowManager(){
+ destroyWindow();
+}
+bool WindowManager::init()
+{
+}
+bool WindowManager::loadMedia()
+{
+}
+void WindowManager::close()
+{
+
+}
+SDL_Renderer* WindowManager::getRenderer(){
+ return renderer;
+}
+void WindowManager::update(){
+}
+bool WindowManager::initWindow(){
+ if(SDL_Init(SDL_INIT_EVERYTHING) != 0){
+ fprintf(stderr,"Error inititalising SDL.\n");
+ return false;
+ }
+ window = SDL_CreateWindow("Gameloop POC",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,SCREEN_WIDTH,SCREEN_HEIGHT,SDL_WINDOW_RESIZABLE);
+ if(!window){
+ fprintf(stderr,"Error creating SDL Window. \n");
+ return false;
+ }
+ renderer = SDL_CreateRenderer(window,-1,0);
+ if(!renderer){
+ fprintf(stderr,"Error creating SDL renderer. \n");
+ return false;
+ }
+ return true;
+}
+void WindowManager::destroyWindow(){
+ SDL_DestroyRenderer(renderer);
+ SDL_DestroyWindow(window);
+ SDL_Quit();
+}