galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
LuaCore.cpp
Go to the documentation of this file.
1
7
8#include <entt/locator/locator.hpp>
9#include <sol/sol.hpp>
10
13
14#include "../Lua.hpp"
15
16namespace galaxy
17{
18 std::string root_path_wrapper() noexcept
19 {
20 return Settings::root_dir().string();
21 }
22
23 std::string assets_path_wrapper() noexcept
24 {
25 return Settings::assets_dir().string();
26 }
27
28 // std::string editor_path_wrapper() noexcept
29 //{
30 // return Settings::editor_dir().string();
31 // }
32
33 void Lua::inject_core() noexcept
34 {
35 auto& lua = entt::locator<sol::state>::value();
36
37 auto config_type = lua.new_usertype<Config>("Config", sol::no_constructor);
38 config_type["load"] = &Config::load;
39 config_type["save"] = &Config::save;
40 config_type["set_bool"] = sol::resolve<void(const std::string&, const bool&)>(&Config::set<bool>);
41 config_type["set_int"] = sol::resolve<void(const std::string&, const int&)>(&Config::set<int>);
42 config_type["set_float"] = sol::resolve<void(const std::string&, const float&)>(&Config::set<float>);
43 config_type["set_string"] = sol::resolve<void(const std::string&, const std::string&)>(&Config::set<std::string>);
44 config_type["set_section_bool"] = sol::resolve<void(const std::string&, const bool&, const std::string&, const std::string&)>(&Config::set<bool>);
45 config_type["set_section_int"] = sol::resolve<void(const std::string&, const int&, const std::string&, const std::string&)>(&Config::set<int>);
46 config_type["set_section_float"] = sol::resolve<void(const std::string&, const float&, const std::string&, const std::string&)>(&Config::set<float>);
47 config_type["set_section_string"] = sol::resolve<void(const std::string&, const std::string&, const std::string&, const std::string&)>(&Config::set<std::string>);
48 config_type["restore_bool"] = sol::resolve<void(const std::string&, const bool&)>(&Config::restore<bool>);
49 config_type["restore_int"] = sol::resolve<void(const std::string&, const int&)>(&Config::restore<int>);
50 config_type["restore_float"] = sol::resolve<void(const std::string&, const float&)>(&Config::restore<float>);
51 config_type["restore_string"] = sol::resolve<void(const std::string&, const std::string&)>(&Config::restore<std::string>);
52 config_type["restore_section_bool"] = sol::resolve<void(const std::string&, const bool&, const std::string&, const std::string&)>(&Config::restore<bool>);
53 config_type["restore_section_int"] = sol::resolve<void(const std::string&, const int&, const std::string&, const std::string&)>(&Config::restore<int>);
54 config_type["restore_section_float"] = sol::resolve<void(const std::string&, const float&, const std::string&, const std::string&)>(&Config::restore<float>);
55 config_type["restore_section_string"] = sol::resolve<void(const std::string&, const std::string&, const std::string&, const std::string&)>(&Config::restore<std::string>);
56 config_type["has"] = sol::resolve<bool(const std::string&)>(&Config::has);
57 config_type["has_section"] = sol::resolve<bool(const std::string&, const std::string&, const std::string&)>(&Config::has);
58 config_type["get_bool"] = sol::resolve<std::optional<bool>(const std::string&)>(&Config::get<bool>);
59 config_type["get_int"] = sol::resolve<std::optional<int>(const std::string&)>(&Config::get<int>);
60 config_type["get_float"] = sol::resolve<std::optional<float>(const std::string&)>(&Config::get<float>);
61 config_type["get_string"] = sol::resolve<std::optional<std::string>(const std::string&)>(&Config::get<std::string>);
62 config_type["get_section_int"] = sol::resolve<std::optional<int>(const std::string&, const std::string&, const std::string&)>(&Config::get<int>);
63 config_type["get_section_float"] = sol::resolve<std::optional<float>(const std::string&, const std::string&, const std::string&)>(&Config::get<float>);
64 config_type["get_section_string"] = sol::resolve<std::optional<std::string>(const std::string&, const std::string&, const std::string&)>(&Config::get<std::string>);
65 config_type["get_section_bool"] = sol::resolve<std::optional<bool>(const std::string&, const std::string&, const std::string&)>(&Config::get<bool>);
66 config_type["empty"] = &Config::empty;
67
68 lua.set_function("settings_set_to_default", &Settings::set_config_to_default);
69 lua.set_function("settings_set_from_config", &Settings::set_settings_from_config);
70 lua.set_function("settings_log_dir", &Settings::log_dir);
71 lua.set_function("settings_window_width", &Settings::window_width);
72 lua.set_function("settings_window_height", &Settings::window_height);
73 lua.set_function("settings_title", &Settings::title);
74 lua.set_function("settings_vsync", &Settings::vsync);
75 lua.set_function("settings_window_resizable", &Settings::window_resizable);
76 lua.set_function("settings_decoration", &Settings::decoration);
77 lua.set_function("settings_fullscreen", &Settings::fullscreen);
78 lua.set_function("settings_maximized", &Settings::maximized);
79 lua.set_function("settings_minimized", &Settings::minimized);
80 lua.set_function("settings_borderless_fullscreen", &Settings::borderless_fullscreen);
81 lua.set_function("settings_window_icon", &Settings::window_icon);
82 lua.set_function("settings_ontop", &Settings::ontop);
83
84 lua.set_function("settings_root_dir", &root_path_wrapper);
85 lua.set_function("settings_assets_dir", &assets_path_wrapper);
86 lua.set_function("settings_assets_dir_music", &Settings::assets_dir_music);
87 lua.set_function("settings_assets_dir_sfx", &Settings::assets_dir_sfx);
88 lua.set_function("settings_assets_dir_voice", &Settings::assets_dir_voice);
89 lua.set_function("settings_assets_dir_font", &Settings::assets_dir_font);
90 lua.set_function("settings_assets_dir_script", &Settings::assets_dir_script);
91 lua.set_function("settings_assets_dir_shaders", &Settings::assets_dir_shaders);
92 lua.set_function("settings_assets_dir_animation", &Settings::assets_dir_animation);
93 lua.set_function("settings_assets_dir_texture", &Settings::assets_dir_texture);
94 lua.set_function("settings_assets_dir_prefabs", &Settings::assets_dir_prefabs);
95 lua.set_function("settings_assets_dir_maps", &Settings::assets_dir_maps);
96 lua.set_function("settings_assets_dir_video", &Settings::assets_dir_video);
97 lua.set_function("settings_assets_dir_ui", &Settings::assets_dir_ui);
98 lua.set_function("settings_asset_pack", &Settings::asset_pack);
99 lua.set_function("settings_use_loose_assets", &Settings::use_loose_assets);
100
101 // lua.set_function("settings_editor_dir", &editor_path_wrapper);
102 // lua.set_function("settings_window_border", &Settings::window_border);
103 // lua.set_function("settings_mouse_grabbed", &Settings::mouse_grabbed);
104 // lua.set_function("settings_cursor_show", &Settings::cursor_show);
105 // lua.set_function("settings_cursor_icon", &Settings::cursor_icon);
106 // lua.set_function("settings_cursor_hotspot", &Settings::cursor_hotspot);
107 // lua.set_function("settings_audio_freq", &Settings::audio_freq);
108 // lua.set_function("settings_ansiotrophy", &Settings::ansiotrophy);
109 // lua.set_function("settings_mipmap", &Settings::mipmap);
110 // lua.set_function("settings_texture_filter", &Settings::texture_filter);
111 // lua.set_function("settings_max_quads", &Settings::max_quads);
112 // lua.set_function("settings_version", &Settings::version);
113 // lua.set_function("settings_identifier", &Settings::identifier);
114 // lua.set_function("settings_creator", &Settings::creator);
115 // lua.set_function("settings_copyright", &Settings::copyright);
116 // lua.set_function("settings_website", &Settings::website);
117 }
118} // namespace galaxy
Allows you to read, write and manipulate JSON config files.
Definition Config.hpp:23
void save()
Save the config file. Must be opened first.
Definition Config.cpp:59
void load(std::string_view file)
Loads config json from disk.
Definition Config.cpp:30
std::optional< Value > get(const std::string &key)
Retrieve a root config value.
Definition Config.hpp:268
void restore(const std::string &key, const Value &value) noexcept
Sets a new setting, only if key or value does not already exist.
Definition Config.hpp:250
bool empty() const
Is the config file blank.
Definition Config.cpp:106
void set(const std::string &key, const Value &value) noexcept
Set a new key-value pair for the config.
Definition Config.hpp:217
bool has(const std::string &key) noexcept
Check if the config file actually has a value.
Definition Config.cpp:68
static void inject_core() noexcept
Inject galaxy core services into Lua.
Definition LuaCore.cpp:33
Application.hpp galaxy.
std::string assets_path_wrapper() noexcept
Definition LuaCore.cpp:23
std::string root_path_wrapper() noexcept
Definition LuaCore.cpp:18
static auto window_icon() noexcept -> const std::string &
Window icon file in vfs.
Definition Settings.cpp:193
static auto root_dir() noexcept -> std::filesystem::path
Current root directory of application, unless it has been changed.
Definition Settings.cpp:203
static auto window_height() noexcept -> int
Window creation height.
Definition Settings.cpp:148
static auto log_dir() noexcept -> const std::string &
Current root directory of application, unless it has been changed.
Definition Settings.cpp:137
static auto fullscreen() noexcept -> bool
Is window started fullscreen.
Definition Settings.cpp:173
static auto assets_dir_prefabs() noexcept -> const std::string &
Prefab asset location.
Definition Settings.cpp:263
static auto assets_dir_texture() noexcept -> const std::string &
Textures asset location.
Definition Settings.cpp:258
static auto vsync() noexcept -> bool
Vsync control.
Definition Settings.cpp:158
static auto minimized() noexcept -> bool
Is window started minimized?
Definition Settings.cpp:183
static auto assets_dir_voice() noexcept -> const std::string &
Voice asset location.
Definition Settings.cpp:233
static auto window_width() noexcept -> int
Window creation width.
Definition Settings.cpp:143
static auto assets_dir_shaders() noexcept -> const std::string &
Shaders asset location.
Definition Settings.cpp:248
static auto assets_dir_ui() noexcept -> const std::string &
UI asset location.
Definition Settings.cpp:278
static auto set_settings_from_config() -> void
Set all our settings using the provided config file.
Definition Settings.cpp:80
static auto use_loose_assets() noexcept -> bool
Should asset data be read from pack or assets dir.
Definition Settings.cpp:218
static auto assets_dir_animation() noexcept -> const std::string &
Animation data location.
Definition Settings.cpp:253
static auto assets_dir_script() noexcept -> const std::string &
Scripts asset location.
Definition Settings.cpp:243
static auto assets_dir_music() noexcept -> const std::string &
Music asset location.
Definition Settings.cpp:223
static auto window_resizable() noexcept -> bool
Is the window resizable.
Definition Settings.cpp:163
static auto maximized() noexcept -> bool
Is window started maximized?
Definition Settings.cpp:178
static auto title() noexcept -> const std::string &
Game title.
Definition Settings.cpp:153
static auto assets_dir() noexcept -> std::filesystem::path
Main data directory.
Definition Settings.cpp:208
static auto ontop() noexcept -> bool
Should the window always be on top.
Definition Settings.cpp:198
static auto asset_pack() noexcept -> const std::string &
Name of packed assets file.
Definition Settings.cpp:213
static auto borderless_fullscreen() noexcept -> bool
Is window in borderless fullscreen?
Definition Settings.cpp:188
static auto assets_dir_sfx() noexcept -> const std::string &
SFX asset location.
Definition Settings.cpp:228
static auto assets_dir_maps() noexcept -> const std::string &
Maps asset location.
Definition Settings.cpp:268
static auto set_config_to_default() -> void
Restore all config settings to default.
Definition Settings.cpp:23
static auto assets_dir_video() noexcept -> const std::string &
Video asset location.
Definition Settings.cpp:273
static auto assets_dir_font() noexcept -> const std::string &
Font asset location.
Definition Settings.cpp:238
static auto decoration() noexcept -> bool
Controls if a window has a border around it (including titlebar).
Definition Settings.cpp:168