diff --git a/src/app/editor/editor_manager.h b/src/app/editor/editor_manager.h index e66bb34f..355b5965 100644 --- a/src/app/editor/editor_manager.h +++ b/src/app/editor/editor_manager.h @@ -20,6 +20,7 @@ #include "app/editor/overworld/overworld_editor.h" #include "app/editor/settings_editor.h" #include "app/editor/sprite/sprite_editor.h" +#include "app/editor/system/extension_manager.h" #include "app/editor/utils/gfx_context.h" #include "app/emu/emulator.h" #include "app/gfx/snes_palette.h" @@ -110,7 +111,7 @@ class EditorManager : public SharedRom, Project current_project_; yaze_editor_context editor_context_; - std::vector extensions_; + ExtensionManager extension_manager_; AssemblyEditor assembly_editor_; DungeonEditor dungeon_editor_; diff --git a/src/app/editor/system/extension_manager.h b/src/app/editor/system/extension_manager.h new file mode 100644 index 00000000..bab8ab82 --- /dev/null +++ b/src/app/editor/system/extension_manager.h @@ -0,0 +1,49 @@ +#ifndef YAZE_APP_EDITOR_SYSTEM_EXTENSION_MANAGER_H +#define YAZE_APP_EDITOR_SYSTEM_EXTENSION_MANAGER_H + +#include + +#include "ext/extension.h" + +namespace yaze { +namespace app { +namespace editor { + +class ExtensionManager { + public: + void RegisterExtension(yaze_extension* extension); + void InitializeExtensions(yaze_editor_context* context); + void ShutdownExtensions(); + void ExecuteExtensionUI(); + + 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