From 8add3c9619554142e69e1cfd04e4a27a9efa7b1e Mon Sep 17 00:00:00 2001
From: Alfred Burgess <aburgess@ucc.gu.uwa.edu.au>
Date: Thu, 7 Dec 2023 13:41:08 +0800
Subject: [PATCH] Expanded game engine and created scene

---
 include/game-engine.h | 20 +++++++++++++++++++-
 include/scene.h       | 14 ++++++++++++++
 src/Scene.cpp         |  8 ++++++++
 src/game-engine.cpp   | 16 +++++++++++++++-
 4 files changed, 56 insertions(+), 2 deletions(-)
 create mode 100644 include/scene.h
 create mode 100644 src/Scene.cpp

diff --git a/include/game-engine.h b/include/game-engine.h
index e66e601..d8f4e77 100644
--- a/include/game-engine.h
+++ b/include/game-engine.h
@@ -1,8 +1,13 @@
 #ifndef __GAME_H__
 #define __GAME_H__
 
+#include <map>
+#include <string>
+#include <vector>
+
 #include "logger.h"
 #include "entity-manager.h"
+#include "scene.h"
 
 class GameEngine
 {
@@ -10,15 +15,28 @@ class GameEngine
 		GameEngine();
 		~GameEngine();
 		void init();
+		void run();
 		void update();
+		void close();
+		Scene currentScene();
+		void changeScene( Scene scene );
+		// std::vector< Asset& > getAssets();
+		// Window& getWindow();
 
+		bool isRunning;
 	private:
 		EntityManager _entityManager;
 		Logger& _logger;
 
+		std::string _currScene;
+		void changeScene( Scene scene );
+
 		// Window* _window;
+		// std::vector<Asset> _assets;
+		std::map< std::string, Scene > _scenes;
 
-		// Systems
+		/* Systems */
+		// sUserInput
 };
 
 #endif // __GAME_H__
diff --git a/include/scene.h b/include/scene.h
new file mode 100644
index 0000000..149f98d
--- /dev/null
+++ b/include/scene.h
@@ -0,0 +1,14 @@
+#ifndef __SCENE_H__ 
+#define __SCENE_H__ 
+
+#include "logger.h"
+
+class Scene{
+	public:
+		Scene();
+		~Scene();
+	private:
+		Logger& _logger;
+};
+
+#endif // __SCENE_H__ 
diff --git a/src/Scene.cpp b/src/Scene.cpp
new file mode 100644
index 0000000..3d38a18
--- /dev/null
+++ b/src/Scene.cpp
@@ -0,0 +1,8 @@
+#include "scene.h"
+
+
+Scene::Scene()
+	: _logger( Logger::instance() )
+{ this->_logger.info( "Creating new Scene" ); }
+Scene::~Scene()
+	{ this->_logger.info( "Deleting Scene" ); }
diff --git a/src/game-engine.cpp b/src/game-engine.cpp
index 806836f..ea8cbdc 100644
--- a/src/game-engine.cpp
+++ b/src/game-engine.cpp
@@ -10,7 +10,21 @@ GameEngine::~GameEngine()
 {
 	this->_logger.info( "Cleaning GameEngine Object" );
 }
-void GameEngine::init(){}
+void GameEngine::close(){}
+void GameEngine::init()
+{
+	this->isRunning = false;
+	this->_currScene = "";
+}
+void GameEngine::changeScene( Scene scene ){}
+Scene* GameEngine::currentScene()
+{
+	return nullptr;
+}
+void GameEngine::run()
+{
+	this->isRunning = true;
+}
 void GameEngine::update()
 {
 	this->_entityManager.update();
-- 
GitLab