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() = 0;
50 virtual void EndRender() = 0;
51
52 int getSceneIndex() const {
53 return _sceneIndex;
54 }
55 void setRunning() {
56 _currentState = SceneState::RUNNING;
57 }
58
59 SceneState getState() const { return _currentState; }
60
61 void setParentApp(AppInterface* app) { _app = app; }
62
63 AppInterface* getApp() const { return _app; }
64
65 void setManager(std::string m_managerName) {
66 if (!m_managerName.empty()) {
67 auto it = managers.find(m_managerName);
68 if (it == managers.end()) {
69 managers[m_managerName] = new Manager();
70 }
71 manager = managers[m_managerName];
72 managerName = m_managerName;
73 }
74 };
75
76protected:
77 SceneState _currentState = SceneState::NONE;
78 AppInterface* _app = nullptr;
79 int _sceneIndex = -1;
80
81 std::unordered_map<std::string, Manager*> managers = {
82 };
83
84 Manager* manager = nullptr;
85 std::string managerName = "";
86
87 bool _renderDebug = false;
88 bool _clusterLayout = false;
89
90};
Definition AppInterface.h:19
Definition IScene.h:21
Definition GECSManager.h:14
Definition SceneList.h:8