From 9cea919246d9f0408d503c31a47f8d580d23acfb Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 10 Aug 2024 20:10:39 -0400 Subject: [PATCH] add ExtensionManager implementation --- src/app/editor/CMakeLists.txt | 1 + src/app/editor/system/extension_manager.cc | 37 ++++++++++++++++++++++ src/app/editor/system/extension_manager.h | 30 +++--------------- src/ext/extension.h | 2 +- 4 files changed, 43 insertions(+), 27 deletions(-) create mode 100644 src/app/editor/system/extension_manager.cc diff --git a/src/app/editor/CMakeLists.txt b/src/app/editor/CMakeLists.txt index 0e5ded5c..99469da2 100644 --- a/src/app/editor/CMakeLists.txt +++ b/src/app/editor/CMakeLists.txt @@ -16,4 +16,5 @@ set( app/editor/utils/gfx_context.cc app/editor/overworld/refresh.cc app/editor/overworld/entity.cc + app/editor/system/extension_manager.cc ) \ No newline at end of file diff --git a/src/app/editor/system/extension_manager.cc b/src/app/editor/system/extension_manager.cc new file mode 100644 index 00000000..f70cf7d3 --- /dev/null +++ b/src/app/editor/system/extension_manager.cc @@ -0,0 +1,37 @@ +#include "extension_manager.h" + +#include + +#include "ext/extension.h" + +namespace yaze { +namespace app { +namespace editor { + +void ExtensionManager::RegisterExtension(yaze_extension* extension) { + extensions_.push_back(extension); +} + +void ExtensionManager::InitializeExtensions(yaze_editor_context* context) { + for (auto& extension : extensions_) { + extension->initialize(context); + } +} + +void ExtensionManager::ShutdownExtensions() { + for (auto& extension : extensions_) { + extension->cleanup(); + } +} + +void ExtensionManager::ExecuteExtensionUI(yaze_editor_context* context) { + for (auto& extension : extensions_) { + if (extension->extend_ui) { + extension->extend_ui(context); + } + } +} + +} // namespace editor +} // namespace app +} // namespace yaze diff --git a/src/app/editor/system/extension_manager.h b/src/app/editor/system/extension_manager.h index bab8ab82..94e64352 100644 --- a/src/app/editor/system/extension_manager.h +++ b/src/app/editor/system/extension_manager.h @@ -14,36 +14,14 @@ class ExtensionManager { void RegisterExtension(yaze_extension* extension); void InitializeExtensions(yaze_editor_context* context); void ShutdownExtensions(); - void ExecuteExtensionUI(); + void ExecuteExtensionUI(yaze_editor_context* context); private: std::vector extensions_; }; -void ExtensionManager::RegisterExtension(yaze_extension* extension) { - extensions_.push_back(extension); -} - -void ExtensionManager::InitializeExtensions(yaze_editor_context* context) { - for (auto& extension : extensions_) { - extension->initialize(context); - } -} - -void ExtensionManager::ShutdownExtensions() { - for (auto& extension : extensions_) { - extension->cleanup(); - } -} - -void ExtensionManager::ExecuteExtensionUI() { - for (auto& extension : extensions_) { - if (extension->extend_ui) { - extension->extend_ui(); - } - } -} - } // namespace editor } // namespace app -} // namespace yaze \ No newline at end of file +} // namespace yaze + +#endif // YAZE_APP_EDITOR_SYSTEM_EXTENSION_MANAGER_H \ No newline at end of file diff --git a/src/ext/extension.h b/src/ext/extension.h index a7c54f1a..3e9668d3 100644 --- a/src/ext/extension.h +++ b/src/ext/extension.h @@ -7,7 +7,7 @@ extern "C" { #include "yaze.h" -typedef void (*yaze_initialize_func)(void); +typedef void (*yaze_initialize_func)(yaze_editor_context* context); typedef void (*yaze_cleanup_func)(void); typedef void (*yaze_extend_ui_func)(yaze_editor_context* context); typedef void (*yaze_manipulate_rom_func)(z3_rom* rom);