R-Type
GameEngine.hpp
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2023
3 ** R-Type
4 ** File description:
5 ** GameEngine
6 */
7 
8 #ifndef GAMEENGINE_HPP_
9 #define GAMEENGINE_HPP_
10 #include "Registry.hpp"
11 #include "SceneManager.hpp"
12 #include "utils/DeltaTime.hpp"
13 #include "utils/SfmlTypes.hpp"
14 #include "PrefabManager.hpp"
15 #include "AssetManager.hpp"
16 #include "Event.hpp"
19 #include "systems/DrawSystem.hpp"
31 
32 #ifdef DEBUG
33  #include "Debug.hpp"
34 #endif
35 
36 namespace GameEngine
37 {
39  class GameEngine
40  {
41  public:
42 #ifdef DEBUG
45  GameEngine(std::size_t maxEntities = 1024)
46  : registry(maxEntities), prefabManager(assetManager), debugMenu(eventManager, registry, deltaTime)
47  {
48  deltaTime.update();
49  };
50 #else
51  GameEngine(std::size_t maxEntities = 1024) : registry(maxEntities), prefabManager(assetManager)
52  {
53  deltaTime.update();
54  };
55 #endif
57  ~GameEngine() = default;
58 
69 #ifdef DEBUG
70  Debug::DebugMenu debugMenu;
71 #endif
72  };
73 } // namespace GameEngine
74 
75 #endif /* !GAMEENGINE_HPP_ */
Class to manage assets.
Definition: AssetManager.hpp:18
DeltaTime class which handles the delta time.
Definition: DeltaTime.hpp:16
class to help create and manage all the event handlers
Definition: Event.hpp:135
Registry registry
Registry managing entities, components and systems.
Definition: GameEngine.hpp:62
SceneManager sceneManager
Window of the game.
Definition: GameEngine.hpp:66
PrefabManager prefabManager
Definition: GameEngine.hpp:68
DeltaTime deltaTime
Delta time class managing the delta time.
Definition: GameEngine.hpp:64
EventManager eventManager
Event manager for the game engine.
Definition: GameEngine.hpp:60
AssetManager assetManager
Definition: GameEngine.hpp:67
GameEngine(std::size_t maxEntities=1024)
Definition: GameEngine.hpp:51
~GameEngine()=default
Default destructor.
Class to manage prefabs.
Definition: PrefabManager.hpp:26
Entity component system, handling entities, components and systems.
Definition: Registry.hpp:31
Class managing all the scenes for the game.
Definition: SceneManager.hpp:19
Definition: AssetManager.hpp:15