TazGraph Project v0.1.0
Loading...
Searching...
No Matches
IScene.h
1#pragma once
2
3#include "../Renderers/LineRenderer/LineRenderer.h"
4#include "../DataManager/DataManager.h"
5
6
7#include "../GECS/Core/GECSManager.h"
8
9#define SCENE_INDEX_NO_SCENE -1
10
11class AppInterface;
12
13enum class SceneState {
14 NONE,
15 RUNNING,
16 EXIT_APPLICATION,
17 CHANGE_NEXT,
18 CHANGE_PREVIOUS
19};
20
21class IScene {
22public:
23 friend class SceneList;
24 IScene() {
25
26 }
27 virtual ~IScene() {
28
29 }
30
31 //Returns the index of the next or previous screen when changing screens
32 virtual int getNextSceneIndex() const = 0;
33 virtual int getPreviousSceneIndex() const = 0;
34
35 //Called at beginning and end of application
36 virtual void build() = 0;
37 virtual void destroy() = 0;
38
39 //Called when a screen enters and exits focus
40 virtual void onEntry() = 0;
41 virtual void onExit() = 0;
42
43 virtual void checkInput() = 0;
44
45 virtual void update(float deltaTime) = 0;
46 virtual void draw() = 0;
47
48 virtual void BeginRender() = 0;
49 virtual void updateUI(float deltaTime) = 0;
50 virtual void drawUI() = 0;
51 virtual void EndRender() = 0;
52
53 int getSceneIndex() const {
54 return _sceneIndex;
55 }
56 void setRunning() {
57 _currentState = SceneState::RUNNING;
58 }
59
60 SceneState getState() const { return _currentState; }
61
62 void setParentApp(AppInterface* app) { _app = app; }
63
64 AppInterface* getApp() const { return _app; }
65
66 void setManager(std::string m_managerName) {
67 if (!m_managerName.empty()) {
68 auto it = managers.find(m_managerName);
69 if (it == managers.end()) {
70 managers[m_managerName] = new Manager();
71 }
72 manager = managers[m_managerName];
73 managerName = m_managerName;
74 }
75 };
76
77protected:
78 SceneState _currentState = SceneState::NONE;
79 AppInterface* _app = nullptr;
80 int _sceneIndex = -1;
81
82 std::unordered_map<std::string, Manager*> managers = {
83 };
84
85 Manager* manager = nullptr;
86 std::string managerName = "";
87
88 bool _renderDebug = false;
89};
Definition AppInterface.h:19
Definition IScene.h:21
Definition GECSManager.h:14
Definition SceneList.h:8