diff options
author | Hop311 <Hop3114@gmail.com> | 2023-09-14 21:17:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-14 21:17:04 +0200 |
commit | 9de41a0ed5f050f205219ab2a9f114800d048c14 (patch) | |
tree | 559681d5a2569adc307409d818311760edc12654 /extension/src/openvic-extension/register_types.cpp | |
parent | 1013b3c21226f703caba954664628694aedde469 (diff) | |
parent | 70c040d042cb536e5ce16b0cfff0e0afa39e8ed7 (diff) |
Merge pull request #151 from OpenVicProject/dataloading
Build system cleanup + dataloading scaffolding + JSON dataloading removed
Diffstat (limited to 'extension/src/openvic-extension/register_types.cpp')
-rw-r--r-- | extension/src/openvic-extension/register_types.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/extension/src/openvic-extension/register_types.cpp b/extension/src/openvic-extension/register_types.cpp new file mode 100644 index 0000000..273bb85 --- /dev/null +++ b/extension/src/openvic-extension/register_types.cpp @@ -0,0 +1,63 @@ +#include "register_types.hpp" + +#include <godot_cpp/classes/engine.hpp> + +#include "openvic-extension/Checksum.hpp" +#include "openvic-extension/GameSingleton.hpp" +#include "openvic-extension/LoadLocalisation.hpp" +#include "openvic-extension/MapMesh.hpp" + +using namespace godot; +using namespace OpenVic; + +static Checksum* _checksum; +static LoadLocalisation* _load_localisation; +static GameSingleton* _map_singleton; + +void initialize_openvic_types(ModuleInitializationLevel p_level) { + if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } + + ClassDB::register_class<Checksum>(); + _checksum = memnew(Checksum); + Engine::get_singleton()->register_singleton("Checksum", Checksum::get_singleton()); + + ClassDB::register_class<LoadLocalisation>(); + _load_localisation = memnew(LoadLocalisation); + Engine::get_singleton()->register_singleton("LoadLocalisation", LoadLocalisation::get_singleton()); + + ClassDB::register_class<GameSingleton>(); + _map_singleton = memnew(GameSingleton); + Engine::get_singleton()->register_singleton("GameSingleton", GameSingleton::get_singleton()); + + ClassDB::register_class<MapMesh>(); +} + +void uninitialize_openvic_types(ModuleInitializationLevel p_level) { + if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } + + Engine::get_singleton()->unregister_singleton("Checksum"); + memdelete(_checksum); + + Engine::get_singleton()->unregister_singleton("LoadLocalisation"); + memdelete(_load_localisation); + + Engine::get_singleton()->unregister_singleton("GameSingleton"); + memdelete(_map_singleton); +} + +extern "C" { + // Initialization. + GDExtensionBool GDE_EXPORT openvic_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization* r_initialization) { + GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization); + + init_obj.register_initializer(initialize_openvic_types); + init_obj.register_terminator(uninitialize_openvic_types); + init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE); + + return init_obj.init(); + } +} |