Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
GameEngine.h
Go to the documentation of this file.
1/**
2 * @file GameEngine.h
3 * @brief Core game engine class
4 * @author Nicolas Chereau
5 * @date 2025
6 *
7 * Purpose:
8 * - Class representing the core game engine
9 * - GameEngine stores the list of all game objects
10 */
11#pragma once
12#include <SDL3/SDL.h>
13#include "system/system_utils.h"
14#include <string>
15
16using namespace std;
17
18// Forward declarations to avoid circular includes
19class InputsManager;
20class SystemMenu;
21class VideoGame;
22class OptionsManager;
23class DataManager;
24
25/**
26 * @brief Main game engine singleton
27 *
28 * Manages all subsystems including input, rendering, and world management.
29 * Handles the main game loop timing via delta time calculation.
30 */
32{
33 public:
34 /**
35 * @brief Constructor for GameEngine
36 */
38 {
39 name = "GameEngine";
40 SYSTEM_LOG << "GameEngine created and Initialized\n";
41 }
42
43 /**
44 * @brief Destructor for GameEngine
45 */
46 virtual ~GameEngine()
47 {
48 SYSTEM_LOG << "GameEngine destroyed\n";
49 }
50
51 //-------------------------------------------------------------
52 /**
53 * @brief Get singleton instance
54 * @return Reference to GameEngine instance
55 */
57 {
58 static GameEngine instance;
59 return instance;
60 }
61
62 /**
63 * @brief Get singleton instance (short form)
64 * @return Reference to GameEngine instance
65 */
66 static GameEngine& Get() { return GetInstance(); }
67
68 /**
69 * @brief Initialize all engine subsystems
70 *
71 * Must be called once before using the engine.
72 * Initializes InputManager, DataManager, CameraSystem, etc.
73 */
74 void Initialize();
75
76 //-------------------------------------------------------------
77 /**
78 * @brief Process one frame
79 *
80 * Calculates delta time and updates all systems.
81 */
82 void Process();
83
84 //-------------------------------------------------------------
85 public:
86 /** @brief Engine name identifier */
87 string name = "";
88
89 /** @brief Pointer to input manager subsystem */
91
92 /** @brief Pointer to system menu subsystem */
94
95 /** @brief Pointer to video game subsystem */
97
98 /** @brief Pointer to options manager subsystem */
100
101 /** @brief Pointer to data manager subsystem */
103
104 /** @brief Reference to input manager */
106
107 /** @brief Reference to system menu */
109
110 /** @brief Reference to video game */
112
113 /** @brief Reference to options manager */
115
116 /** @brief Reference to data manager */
118
119 /** @brief Delta time between frames in seconds */
120 static float fDt;
121
122 /** @brief Screen width in pixels */
123 static int screenWidth;
124
125 /** @brief Screen height in pixels */
126 static int screenHeight;
127
128 /** @brief Main SDL renderer */
130
131 /**
132 * @brief Get the main SDL renderer
133 * @return Pointer to SDL_Renderer
134 */
136};
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
Main game engine singleton.
Definition GameEngine.h:32
void Process()
Process one frame.
InputsManager & inputsmanager
Reference to input manager.
Definition GameEngine.h:105
VideoGame * ptr_videogame
Pointer to video game subsystem.
Definition GameEngine.h:96
SystemMenu & systemmenu
Reference to system menu.
Definition GameEngine.h:108
static int screenWidth
Screen width in pixels.
Definition GameEngine.h:123
virtual ~GameEngine()
Destructor for GameEngine.
Definition GameEngine.h:46
static float fDt
Delta time between frames in seconds.
Definition GameEngine.h:120
GameEngine()
Constructor for GameEngine.
Definition GameEngine.h:37
SDL_Renderer * GetMainRenderer() const
Get the main SDL renderer.
Definition GameEngine.h:135
static int screenHeight
Screen height in pixels.
Definition GameEngine.h:126
VideoGame & videogame
Reference to video game.
Definition GameEngine.h:111
string name
Engine name identifier.
Definition GameEngine.h:87
static GameEngine & GetInstance()
Get singleton instance.
Definition GameEngine.h:56
static GameEngine & Get()
Get singleton instance (short form)
Definition GameEngine.h:66
void Initialize()
Initialize all engine subsystems.
DataManager & datamanager
Reference to data manager.
Definition GameEngine.h:117
OptionsManager & optionsmanager
Reference to options manager.
Definition GameEngine.h:114
OptionsManager * ptr_optionsmanager
Pointer to options manager subsystem.
Definition GameEngine.h:99
SystemMenu * ptr_systemmenu
Pointer to system menu subsystem.
Definition GameEngine.h:93
DataManager * ptr_datamanager
Pointer to data manager subsystem.
Definition GameEngine.h:102
InputsManager * ptr_inputsmanager
Pointer to input manager subsystem.
Definition GameEngine.h:90
static SDL_Renderer * renderer
Main SDL renderer.
Definition GameEngine.h:129
#define SYSTEM_LOG