CPP-TOOLBOX
Loading...
Searching...
No Matches
toolbox_engine.hpp
Go to the documentation of this file.
1#ifndef TOOLBOX_ENGINE_HPP
2#define TOOLBOX_ENGINE_HPP
3
5
6#include <GLFW/glfw3.h>
7#include <string>
8#include <sstream>
9#include <utility>
10
11namespace tbx_engine {
12
13const std::string config_value_slow_move = "slow_move";
14const std::string config_value_fast_move = "fast_move";
15const std::string config_value_forward = "forward";
16const std::string config_value_left = "left";
17const std::string config_value_back = "back";
18const std::string config_value_right = "right";
19const std::string config_value_up = "up";
20const std::string config_value_down = "down";
21
31
32std::optional<EKey> get_input_key_from_config_if_valid(InputState &input_state, Configuration &configuration,
33 const std::string &section_key);
34
36 const std::string &section_key);
37
39 Configuration &configuration, double dt);
40
43
45 InputGraphicsSoundMenu &input_graphics_sound_menu,
46 FPSCamera &fps_camera, Window &window);
47
49 Window &window, ShaderCache &shader_cache);
50
51std::optional<std::pair<int, int>> extract_width_height_from_resolution(const std::string &resolution);
52
53const std::vector<std::string> on_off_options = {"on", "off"};
54
55// NOTE: I don't think the following have to be lambdas.
56
57bool parse_on_off_to_bool(const std::string &user_option);
58bool get_user_on_off_value_or_default(Configuration &configuration, const std::string &section_name,
59 const std::string &key_name);
60int parse_int_or_default(const std::string &text, int default_value);
61
62}; // namespace tbx_engine
63
64// class ToolboxEngineCore {
65// Logger console_logger;
66// Configuration configuration;
67// };
68
70 private:
71 const std::string default_config_file_path = "assets/config/user_cfg.ini";
72 std::string wh;
73 const std::pair<int, int> default_resolution = {1280, 720};
74
75 public:
77
78 bool window_should_close() { return glfwWindowShouldClose(window.glfw_window); }
79
80 std::pair<int, int> requested_resolution;
81
82 Logger logger{"toolbox_engine"};
84
87
88 std::vector<ShaderType> requested_shaders;
89
91 Batcher batcher;
94 // NOTE: this starts frozen so you have to unfreeze it to look around
96
97 std::unordered_map<SoundType, std::string> sound_type_to_file;
99
101
102 ToolboxEngine(const std::string &program_name, std::vector<ShaderType> requested_shaders,
103 std::unordered_map<SoundType, std::string> sound_type_to_file)
104 : configuration(default_config_file_path), requested_shaders(requested_shaders),
105 requested_resolution(tbx_engine::extract_width_height_from_resolution(
106 configuration.get_value("graphics", "resolution").value_or("1280x720"))
107 .value_or(default_resolution)),
108 window(requested_resolution.first, requested_resolution.second, program_name,
109 tbx_engine::get_user_on_off_value_or_default(configuration, "graphics", "fullscreen"), false, false),
114 main_loop(
115 tbx_engine::parse_int_or_default(configuration.get_value("graphics", "max_fps").value_or("60"), 60)),
117 auto all_callbacks =
119 glfw_lambda_callback_manager.set_all_callbacks(all_callbacks);
120 glfw_lambda_callback_manager.register_all_callbacks_with_glfw();
121
122 fps_camera.freeze_camera();
124 // NOTE: this is required to render the menu
125 shader_cache.register_shader_program(ShaderType::ABSOLUTE_POSITION_WITH_COLORED_VERTEX);
126 configuration.apply_config_logic();
127 }
128
135};
136
137#endif // TOOLBOX_ENGINE_HPP
Class to parse a configuration file and apply logic based on section-key pairs.
Definition config_file_parser.hpp:17
Definition fps_camera.hpp:129
Definition fixed_frequency_loop.hpp:29
Allows you to specify glfw callbacks as c++ lambdas, @description glfw only allows c-style function p...
Definition glfw_lambda_callback_manager.hpp:23
Handles all user interface (UI) states related to input, graphics, and sound configuration.
Definition input_graphics_sound_menu.hpp:38
Definition input_state.hpp:198
Definition logger.hpp:22
facilitates simple and robust interaction with shaders
Definition shader_cache.hpp:23
Definition sound_system.hpp:28
FPSCamera fps_camera
Definition toolbox_engine.hpp:95
FixedFrequencyLoop main_loop
Definition toolbox_engine.hpp:92
std::vector< ShaderType > requested_shaders
Definition toolbox_engine.hpp:88
std::unordered_map< SoundType, std::string > sound_type_to_file
Definition toolbox_engine.hpp:97
GLFWLambdaCallbackManager glfw_lambda_callback_manager
Definition toolbox_engine.hpp:85
SoundSystem sound_system
Definition toolbox_engine.hpp:98
Window window
Definition toolbox_engine.hpp:83
Configuration configuration
Definition toolbox_engine.hpp:76
InputState input_state
Definition toolbox_engine.hpp:86
UIRenderSuiteImpl ui_render_suite
Definition toolbox_engine.hpp:100
Logger logger
Definition toolbox_engine.hpp:82
InputGraphicsSoundMenu input_graphics_sound_menu
Definition toolbox_engine.hpp:93
Batcher batcher
Definition toolbox_engine.hpp:91
ToolboxEngine(const std::string &program_name, std::vector< ShaderType > requested_shaders, std::unordered_map< SoundType, std::string > sound_type_to_file)
Definition toolbox_engine.hpp:102
ShaderCache shader_cache
Definition toolbox_engine.hpp:90
std::pair< int, int > requested_resolution
Definition toolbox_engine.hpp:80
void process_and_queue_render_input_graphics_sound_menu()
Definition toolbox_engine.hpp:132
bool window_should_close()
Definition toolbox_engine.hpp:78
Definition ui_render_suite_implementation.hpp:6
Definition window.hpp:27
EKey
Definition input_state.hpp:26
@ s
Definition input_state.hpp:45
@ a
Definition input_state.hpp:27
@ SPACE
Definition input_state.hpp:81
@ d
Definition input_state.hpp:30
@ LEFT_SHIFT
Definition input_state.hpp:146
@ LEFT_CONTROL
Definition input_state.hpp:148
@ w
Definition input_state.hpp:49
@ TAB
Definition input_state.hpp:125
Definition toolbox_engine.cpp:5
const std::string config_value_right
Definition toolbox_engine.hpp:18
int parse_int_or_default(const std::string &text, int default_value)
Definition toolbox_engine.cpp:167
bool parse_on_off_to_bool(const std::string &user_option)
Definition toolbox_engine.cpp:149
const std::string config_value_forward
Definition toolbox_engine.hpp:15
const std::unordered_map< std::string, EKey > movement_value_str_to_default_key
Definition toolbox_engine.hpp:22
const std::string config_value_fast_move
Definition toolbox_engine.hpp:14
AllGLFWLambdaCallbacks create_default_glcm_for_input_and_camera(InputState &input_state, FPSCamera &fps_camera, Window &window, ShaderCache &shader_cache)
Definition toolbox_engine.cpp:101
const std::string config_value_back
Definition toolbox_engine.hpp:17
void potentially_switch_between_menu_and_3d_view(InputState &input_state, InputGraphicsSoundMenu &input_graphics_sound_menu, FPSCamera &fps_camera, Window &window)
Definition toolbox_engine.cpp:86
std::optional< EKey > get_input_key_from_config_if_valid(InputState &input_state, Configuration &configuration, const std::string &section_key)
Definition toolbox_engine.cpp:7
bool get_user_on_off_value_or_default(Configuration &configuration, const std::string &section_name, const std::string &key_name)
Definition toolbox_engine.cpp:157
EKey get_input_key_from_config_or_default_value(InputState &input_state, Configuration &configuration, const std::string &section_key)
Definition toolbox_engine.cpp:19
const std::vector< std::string > on_off_options
Definition toolbox_engine.hpp:53
void config_x_input_state_x_fps_camera_processing(FPSCamera &fps_camera, InputState &input_state, Configuration &configuration, double dt)
Definition toolbox_engine.cpp:25
std::optional< std::pair< int, int > > extract_width_height_from_resolution(const std::string &resolution)
Definition toolbox_engine.cpp:131
const std::string config_value_slow_move
Definition toolbox_engine.hpp:13
const std::string config_value_down
Definition toolbox_engine.hpp:20
const std::string config_value_up
Definition toolbox_engine.hpp:19
const std::string config_value_left
Definition toolbox_engine.hpp:16
void register_input_graphics_sound_config_handlers(Configuration &configuration, FPSCamera &fps_camera, FixedFrequencyLoop &ffl)
Definition toolbox_engine.cpp:46
Definition glfw_lambda_callback_manager.hpp:8