Brenta Engine 1.0
Loading...
Searching...
No Matches
engine.cpp
1#include "engine.hpp"
2
3#ifdef USE_ECS
4#include "ecs.hpp"
5#endif
6
7using namespace Brenta;
8using namespace Brenta::Utils;
9
10#ifdef USE_ECS
11using namespace Brenta::ECS;
12#endif
13
14Engine::Engine(bool uses_screen, bool uses_audio, bool uses_input,
15 bool uses_logger, bool uses_text, bool uses_ecs,
16 int screen_width, int screen_height,
17 bool screen_is_mouse_captured, bool screen_msaa,
18 bool screen_vsync, const char *screen_title,
19 Types::LogLevel log_level, std::string log_file,
20 std::string text_font, int text_size, bool gl_blending,
21 bool gl_cull_face, bool gl_multisample, bool gl_depth_test)
22{
23 if (uses_screen)
24 {
25 Screen::Init(screen_width, screen_height, screen_is_mouse_captured,
26 screen_title, screen_msaa, screen_vsync);
27 GL::LoadOpenGL(gl_blending, gl_cull_face, gl_multisample,
28 gl_depth_test);
29 }
30
31 if (uses_audio)
32 {
34 }
35
36 if (uses_input)
37 {
39 }
40
41 if (uses_logger)
42 {
44 Logger::SetLogLevel(log_level);
45 Logger::SetLogFile(log_file);
46 }
47
48 if (uses_text)
49 {
50 Text::Init();
51 Text::Load(text_font, text_size);
52 }
53#ifdef USE_ECS
54 if (uses_ecs)
55 {
56 World::Init();
57 }
58#endif
59}
60
61Engine::~Engine()
62{
63 if (uses_screen)
64 {
66 }
67
68 if (uses_audio)
69 {
71 }
72
73 if (uses_logger)
74 {
76 }
77
78#ifdef USE_ECS
79 if (uses_ecs)
80 {
81 World::Delete();
82 }
83#endif
84}
85
86Engine::Builder &Engine::Builder::use_screen(bool uses_screen)
87{
88 this->uses_screen = uses_screen;
89 return *this;
90}
91
92Engine::Builder &Engine::Builder::use_audio(bool uses_audio)
93{
94 this->uses_audio = uses_audio;
95 return *this;
96}
97
98Engine::Builder &Engine::Builder::use_input(bool uses_input)
99{
100 this->uses_input = uses_input;
101 return *this;
102}
103
104Engine::Builder &Engine::Builder::use_logger(bool uses_logger)
105{
106 this->uses_logger = uses_logger;
107 return *this;
108}
109
110Engine::Builder &Engine::Builder::use_text(bool uses_text)
111{
112 this->uses_text = uses_text;
113 return *this;
114}
115
116Engine::Builder &Engine::Builder::use_ecs(bool uses_ecs)
117{
118 this->uses_ecs = uses_ecs;
119 return *this;
120}
121
122Engine::Builder &Engine::Builder::set_screen_width(int screen_width)
123{
124 this->screen_width = screen_width;
125 return *this;
126}
127
128Engine::Builder &Engine::Builder::set_screen_height(int screen_height)
129{
130 this->screen_height = screen_height;
131 return *this;
132}
133
135Engine::Builder::set_screen_is_mouse_captured(bool screen_is_mouse_captured)
136{
137 this->screen_is_mouse_captured = screen_is_mouse_captured;
138 return *this;
139}
140
141Engine::Builder &Engine::Builder::set_screen_title(const char *screen_title)
142{
143 this->screen_title = screen_title;
144 return *this;
145}
146
147Engine::Builder &Engine::Builder::set_screen_msaa(bool screen_msaa)
148{
149 this->screen_msaa = screen_msaa;
150 return *this;
151}
152
153Engine::Builder &Engine::Builder::set_screen_vsync(bool screen_vsync)
154{
155 this->screen_vsync = screen_vsync;
156 return *this;
157}
158
159Engine::Builder &Engine::Builder::set_log_level(Types::LogLevel log_level)
160{
161 this->log_level = log_level;
162 return *this;
163}
164
165Engine::Builder &Engine::Builder::set_log_file(std::string log_file)
166{
167 this->log_file = log_file;
168 return *this;
169}
170
171Engine::Builder &Engine::Builder::set_text_font(std::string text_font)
172{
173 this->text_font = text_font;
174 return *this;
175}
176
177Engine::Builder &Engine::Builder::set_text_size(int text_size)
178{
179 this->text_size = text_size;
180 return *this;
181}
182
183Engine::Builder &Engine::Builder::set_gl_blending(bool gl_blending)
184{
185 this->gl_blending = gl_blending;
186 return *this;
187}
188
189Engine::Builder &Engine::Builder::set_gl_cull_face(bool gl_cull_face)
190{
191 this->gl_cull_face = gl_cull_face;
192 return *this;
193}
194
195Engine::Builder &Engine::Builder::set_gl_multisample(bool gl_multisample)
196{
197 this->gl_multisample = gl_multisample;
198 return *this;
199}
200
201Engine::Builder &Engine::Builder::set_gl_depth_test(bool gl_depth_test)
202{
203 this->gl_depth_test = gl_depth_test;
204 return *this;
205}
206
207Engine Engine::Builder::build()
208{
209 return Engine(uses_screen, uses_audio, uses_input, uses_logger, uses_text,
210 uses_ecs, screen_width, screen_height,
211 screen_is_mouse_captured, screen_msaa, screen_vsync,
212 screen_title, log_level, log_file, text_font, text_size,
213 gl_blending, gl_cull_face, gl_multisample, gl_depth_test);
214}
static void Init()
Initialize the audio system.
static void Destroy()
Destroy the audio system.
Engine builder.
Definition engine.hpp:102
Engine setup.
Definition engine.hpp:59
static void LoadOpenGL(bool gl_blending=true, bool gl_cull_face=true, bool gl_multisample=true, bool gl_depth_test=true)
Load OpenGL.
Definition gl_helper.cpp:38
static void Init()
Initialize the input system.
static void Init(int SCR_WIDTH, int SCR_HEIGHT, bool isMouseCaptured=false, const char *title="OpenGL", bool msaa=false, bool vsync=false)
Initialize the window.
Definition screen.cpp:42
static void Terminate()
Terminate the window.
Definition screen.cpp:147
static void Load(std::string font_name, unsigned int fontSize)
Load a font.
Definition text.cpp:50
static void Init()
Initialize the text subsystem.
Definition text.cpp:41
static void SetLogFile(const std::string &file)
Set the log file.
static void Init()
Initialize the logger.
static void Close()
Close the logger.
static void SetLogLevel(Brenta::Types::LogLevel level)
Set the log level.