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