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
14namespace galaxy
15{
16 namespace lua
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 load_config_wrapper()
34 {
35 core::ServiceLocator<core::Loader>::ref().load_user_config();
36 }
37
38 void load_window_wrapper()
39 {
40 core::ServiceLocator<core::Loader>::ref().load_window();
41 }*/
42
44 {
45 auto& lua = entt::locator<sol::state>::value();
46
47 // lua.set_function("galaxy_load_user_config", &load_config_wrapper);
48 // lua.set_function("galaxy_load_window_config", &load_window_wrapper);
49
50 auto config_type = lua.new_usertype<core::Config>("Config", sol::no_constructor);
51 config_type["save"] = &core::Config::save;
52 config_type["empty"] = &core::Config::empty;
53 config_type["has_at_root"] = sol::resolve<bool(const std::string&)>(&core::Config::has);
54 config_type["has_in_section"] = sol::resolve<bool(const std::string&, const std::string&, const std::string&)>(&core::Config::has);
55 config_type["set_bool"] = sol::resolve<void(const std::string&, const bool&)>(&core::Config::set<bool>);
56 config_type["set_int"] = sol::resolve<void(const std::string&, const int&)>(&core::Config::set<int>);
57 config_type["set_float"] = sol::resolve<void(const std::string&, const float&)>(&core::Config::set<float>);
58 config_type["set_string"] = sol::resolve<void(const std::string&, const std::string&)>(&core::Config::set<std::string>);
59 config_type["restore_bool"] = sol::resolve<void(const std::string&, const bool&)>(&core::Config::restore<bool>);
60 config_type["restore_int"] = sol::resolve<void(const std::string&, const int&)>(&core::Config::restore<int>);
61 config_type["restore_float"] = sol::resolve<void(const std::string&, const float&)>(&core::Config::restore<float>);
62 config_type["restore_string"] = sol::resolve<void(const std::string&, const std::string&)>(&core::Config::restore<std::string>);
63 config_type["get_bool"] = sol::resolve<bool(const std::string&)>(&core::Config::get<bool>);
64 config_type["get_int"] = sol::resolve<int(const std::string&)>(&core::Config::get<int>);
65 config_type["get_float"] = sol::resolve<float(const std::string&)>(&core::Config::get<float>);
66 config_type["get_string"] = sol::resolve<std::string(const std::string&)>(&core::Config::get<std::string>);
67 config_type["set_section_bool"] = sol::resolve<void(const std::string&, const bool&, const std::string&, const std::string&)>(&core::Config::set<bool>);
68 config_type["set_section_int"] = sol::resolve<void(const std::string&, const int&, const std::string&, const std::string&)>(&core::Config::set<int>);
69 config_type["set_section_float"] = sol::resolve<void(const std::string&, const float&, const std::string&, const std::string&)>(&core::Config::set<float>);
70 config_type["set_section_string"] = sol::resolve<void(const std::string&, const std::string&, const std::string&, const std::string&)>(&core::Config::set<std::string>);
71 config_type["restore_section_bool"] = sol::resolve<void(const std::string&, const bool&, const std::string&, const std::string&)>(&core::Config::restore<bool>);
72 config_type["restore_section_int"] = sol::resolve<void(const std::string&, const int&, const std::string&, const std::string&)>(&core::Config::restore<int>);
73 config_type["restore_section_float"] = sol::resolve<void(const std::string&, const float&, const std::string&, const std::string&)>(&core::Config::restore<float>);
74 config_type["restore_section_string"] =
75 sol::resolve<void(const std::string&, const std::string&, const std::string&, const std::string&)>(&core::Config::restore<std::string>);
76 config_type["get_section_bool"] = sol::resolve<bool(const std::string&, const std::string&, const std::string&)>(&core::Config::get<bool>);
77 config_type["get_section_int"] = sol::resolve<int(const std::string&, const std::string&, const std::string&)>(&core::Config::get<int>);
78 config_type["get_section_float"] = sol::resolve<float(const std::string&, const std::string&, const std::string&)>(&core::Config::get<float>);
79 config_type["get_section_string"] = sol::resolve<std::string(const std::string&, const std::string&, const std::string&)>(&core::Config::get<std::string>);
80
81 //
82 // SETTINGS FUNCTIONS.
83 //
84
85 lua.set("GALAXY_ZLIB_COMPLETE_CHUNK", GALAXY_ZLIB_COMPLETE_CHUNK);
86
87 lua.set_function("settings_dt", &settings::dt);
88 lua.set_function("settings_ups", &settings::ups);
89 lua.set_function("settings_window_width", &settings::window_width);
90 lua.set_function("settings_window_height", &settings::window_height);
91 lua.set_function("settings_window_title", &settings::window_title);
92 lua.set_function("settings_window_icon", &settings::window_icon);
93 lua.set_function("settings_fullscreen", &settings::fullscreen);
94 lua.set_function("settings_key_repeat", &settings::key_repeat);
95 lua.set_function("settings_vsync", &settings::vsync);
96 lua.set_function("settings_msaa", &settings::msaa);
97 lua.set_function("settings_cursor_visible", &settings::cursor_visible);
98 lua.set_function("settings_cursor_grabbed", &settings::cursor_grabbed);
99 lua.set_function("settings_cursor_icon", &settings::cursor_icon);
100 lua.set_function("settings_cursor_icon_size", &settings::cursor_icon_size);
101 lua.set_function("settings_cursor_hotspot", &settings::cursor_hotspot);
102 lua.set_function("settings_root_dir", &root_path_wrapper);
103 lua.set_function("settings_assets_dir", &assets_path_wrapper);
104 lua.set_function("settings_editor_dir", &editor_path_wrapper);
105 lua.set_function("settings_asset_pack", &settings::asset_pack);
106 lua.set_function("settings_use_loose_assets", &settings::use_loose_assets);
107 lua.set_function("settings_assets_dir_music", &settings::assets_dir_music);
108 lua.set_function("settings_assets_dir_sfx", &settings::assets_dir_sfx);
109 lua.set_function("settings_assets_dir_voice", &settings::assets_dir_voice);
110 lua.set_function("settings_assets_dir_font", &settings::assets_dir_font);
111 lua.set_function("settings_assets_dir_script", &settings::assets_dir_script);
112 lua.set_function("settings_assets_dir_shaders", &settings::assets_dir_shaders);
113 lua.set_function("settings_assets_dir_animation", &settings::assets_dir_animation);
114 lua.set_function("settings_assets_dir_texture", &settings::assets_dir_texture);
115 lua.set_function("settings_assets_dir_prefabs", &settings::assets_dir_prefabs);
116 lua.set_function("settings_assets_dir_maps", &settings::assets_dir_maps);
117 lua.set_function("settings_assets_dir_video", &settings::assets_dir_video);
118 lua.set_function("settings_assets_dir_ui", &settings::assets_dir_ui);
119
120 /*auto registry_type = lua.new_usertype<core::Registry>("Registry", sol::constructors<core::Registry()>());
121 registry_type["clear"] = &core::Registry::clear;
122 registry_type["create"] = &core::Registry::create;
123 registry_type["create_from_prefab"] = &core::Registry::create_from_prefab;
124 registry_type["is_valid"] = &core::Registry::is_valid;
125 registry_type["entt"] = &core::Registry::m_entt;
126
127 auto prefab_type = lua.new_usertype<core::Prefab>("Prefab", sol::constructors<core::Prefab(entt::entity, entt::registry&), core::Prefab(const nlohmann::json&)>());
128 prefab_type["from_entity"] = &core::Prefab::from_entity;
129 prefab_type["from_json"] = &core::Prefab::from_json;
130 prefab_type["to_entity"] = &core::Prefab::to_entity;
131 prefab_type["to_json"] = &core::Prefab::to_json;
132 prefab_type["load"] = &core::Prefab::load;*/
133 }
134 } // namespace lua
135} // namespace galaxy
#define GALAXY_ZLIB_COMPLETE_CHUNK
ZLib inflate/deflate chunk size.
Definition Settings.hpp:280
Allows you to read, write and manipulate JSON config files.
Definition Config.hpp:25
Value get(const std::string &key)
Retrieve a root config value.
Definition Config.hpp:289
void restore(const std::string &key, const Value &value) noexcept
Sets a new setting, only if key or value is missing.
Definition Config.hpp:271
bool empty() const
Is the config file blank.
Definition Config.cpp:144
void save()
Save the config file. Must be opened first.
Definition Config.cpp:75
bool has(const std::string &key) noexcept
Check if the config file actually has a value.
Definition Config.cpp:98
void set(const std::string &key, const Value &value) noexcept
Set a new key-value pair for the config.
Definition Config.hpp:224
std::string root_path_wrapper() noexcept
Definition LuaCore.cpp:18
std::string editor_path_wrapper() noexcept
Definition LuaCore.cpp:28
std::string assets_path_wrapper() noexcept
Definition LuaCore.cpp:23
void inject_core()
Inject galaxy core services into Lua.
Definition LuaCore.cpp:43
Timer.hpp galaxy.
Definition Async.hpp:17
static auto cursor_icon() noexcept -> const std::string &
Cursor texture file in vfs.
Definition Settings.cpp:157
static auto assets_dir_video() noexcept -> const std::string &
Video asset location.
Definition Settings.cpp:247
static auto assets_dir_voice() noexcept -> const std::string &
Voice asset location.
Definition Settings.cpp:207
static auto dt() noexcept -> double
Get galaxy delta time.
Definition Settings.cpp:97
static auto window_icon() noexcept -> const std::string &
Window icon file in vfs.
Definition Settings.cpp:122
static auto assets_dir_script() noexcept -> const std::string &
Scripts asset location.
Definition Settings.cpp:217
static auto msaa() noexcept -> bool
Enable MSAA.
Definition Settings.cpp:142
static auto vsync() noexcept -> bool
Vsync control.
Definition Settings.cpp:137
static auto window_width() noexcept -> int
Window creation width.
Definition Settings.cpp:107
static auto asset_pack() noexcept -> const std::string &
Name of packed assets file.
Definition Settings.cpp:187
static auto window_height() noexcept -> int
Window creation height.
Definition Settings.cpp:112
static auto root_dir() noexcept -> std::filesystem::path
Current root directory of application, unless it has been changed.
Definition Settings.cpp:172
static auto cursor_hotspot() noexcept -> const sf::Vector2u &
Cursor selector point (hotspot).
Definition Settings.cpp:167
static auto assets_dir_prefabs() noexcept -> const std::string &
Prefab asset location.
Definition Settings.cpp:237
static auto assets_dir_shaders() noexcept -> const std::string &
Shaders asset location.
Definition Settings.cpp:222
static auto cursor_visible() noexcept -> bool
Show/hide mouse cursor.
Definition Settings.cpp:147
static auto assets_dir_animation() noexcept -> const std::string &
Animation data location.
Definition Settings.cpp:227
static auto editor_dir() noexcept -> std::filesystem::path
Directory for editor specific stuff.
Definition Settings.cpp:182
static auto window_title() noexcept -> const std::string &
Window title.
Definition Settings.cpp:117
static auto assets_dir_font() noexcept -> const std::string &
Font asset location.
Definition Settings.cpp:212
static auto cursor_grabbed() noexcept -> bool
Grab/release mouse cursor.
Definition Settings.cpp:152
static auto assets_dir_maps() noexcept -> const std::string &
Maps asset location.
Definition Settings.cpp:242
static auto ups() noexcept -> double
Game updates per second, independant of FPS, see "fixed timestep gameloop".
Definition Settings.cpp:102
static auto assets_dir() noexcept -> std::filesystem::path
Main data directory.
Definition Settings.cpp:177
static auto key_repeat() noexcept -> bool
Enable if a keypress will dispatch a single or repeating events.
Definition Settings.cpp:132
static auto assets_dir_texture() noexcept -> const std::string &
Textures asset location.
Definition Settings.cpp:232
static auto use_loose_assets() noexcept -> bool
Should asset data be read from pack or assets dir.
Definition Settings.cpp:192
static auto assets_dir_music() noexcept -> const std::string &
Music asset location.
Definition Settings.cpp:197
static auto cursor_icon_size() noexcept -> const sf::Vector2u &
Cursor icon texture size.
Definition Settings.cpp:162
static auto assets_dir_sfx() noexcept -> const std::string &
SFX asset location.
Definition Settings.cpp:202
static auto assets_dir_ui() noexcept -> const std::string &
UI asset location.
Definition Settings.cpp:252
static auto fullscreen() noexcept -> bool
Window maximized state.
Definition Settings.cpp:127