From cc5b5df72867a9751827ac6e00820cc85620f5b6 Mon Sep 17 00:00:00 2001
From: Alfred Burgess <aburgess@ucc.gu.uwa.edu.au>
Date: Tue, 12 Dec 2023 13:47:49 +0800
Subject: [PATCH] Virtual Scenes

---
 include/asset.h       | 15 +++++++++++++++
 include/game-engine.h |  8 ++++++--
 include/scene.h       | 19 +++++++++++++++++++
 src/asset.cpp         |  6 ++++++
 src/game-engine.cpp   |  3 ++-
 5 files changed, 48 insertions(+), 3 deletions(-)
 create mode 100644 include/asset.h
 create mode 100644 src/asset.cpp

diff --git a/include/asset.h b/include/asset.h
new file mode 100644
index 0000000..a2e1cd7
--- /dev/null
+++ b/include/asset.h
@@ -0,0 +1,15 @@
+#ifndef __ASSET_H__
+#define __ASSET_H__
+
+#include "logger.h"
+
+class Asset
+{
+	public:
+		Asset();
+		~Asset();
+	private:
+		Logger& _logger;
+};
+
+#endif // __ASSET_H__
diff --git a/include/game-engine.h b/include/game-engine.h
index 4f92753..d589229 100644
--- a/include/game-engine.h
+++ b/include/game-engine.h
@@ -19,11 +19,15 @@ class GameEngine
 		void update();
 		void close();
 		Scene* currentScene();
-		void changeScene( Scene scene );
+		// void changeScene( Scene scene );
 		// std::vector< Asset& > getAssets();
 		// Window& getWindow();
 
+		std::vector<Asset> getAssets();
+		void sUserInput();
+
 		bool isRunning;
+		void handleInput();
 	private:
 		EntityManager _entityManager;
 		Logger& _logger;
@@ -32,7 +36,7 @@ class GameEngine
 
 		// Window* _window;
 		// std::vector<Asset> _assets;
-		std::map< std::string, Scene > _scenes;
+		// std::map< std::string, Scene > _scenes;
 
 		/* Systems */
 		// sUserInput
diff --git a/include/scene.h b/include/scene.h
index 149f98d..7974792 100644
--- a/include/scene.h
+++ b/include/scene.h
@@ -1,14 +1,33 @@
 #ifndef __SCENE_H__ 
 #define __SCENE_H__ 
 
+#include <map>
+#include <string>
+#include <vector>
+
 #include "logger.h"
+#include "asset.h"
+#include "entities/entity-generic.h"
+#include "entity-manager.h"
 
 class Scene{
 	public:
 		Scene();
 		~Scene();
+
+		virtual void update() = 0;
+		virtual void simulate() = 0;
+		virtual void doAction() = 0;
+		virtual void registerAction() = 0;
 	private:
+		std::vector<Asset> _assets;
 		Logger& _logger;
+
+		EntityManager _entities;
+		size_t _frame;
+
+		bool _hasEnded = false;
+		std::map< size_t, std::string> _actionMap;
 };
 
 #endif // __SCENE_H__ 
diff --git a/src/asset.cpp b/src/asset.cpp
new file mode 100644
index 0000000..b3b506f
--- /dev/null
+++ b/src/asset.cpp
@@ -0,0 +1,6 @@
+#include "asset.h"
+
+Asset::Asset()
+	: _logger( Logger::instance() )
+{ this->_logger.info( "New asset created" ); }
+Asset::~Asset(){}
diff --git a/src/game-engine.cpp b/src/game-engine.cpp
index ea8cbdc..1846be3 100644
--- a/src/game-engine.cpp
+++ b/src/game-engine.cpp
@@ -16,7 +16,7 @@ void GameEngine::init()
 	this->isRunning = false;
 	this->_currScene = "";
 }
-void GameEngine::changeScene( Scene scene ){}
+// void GameEngine::changeScene( Scene scene ){}
 Scene* GameEngine::currentScene()
 {
 	return nullptr;
@@ -29,3 +29,4 @@ void GameEngine::update()
 {
 	this->_entityManager.update();
 }
+void GameEngine::handleInput() {  }
-- 
GitLab