add ExtensionManager

This commit is contained in:
scawful
2024-08-10 14:49:37 -04:00
parent 4b8dcd3988
commit 9f63a7de67
2 changed files with 51 additions and 1 deletions

View File

@@ -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<yaze_extension*> extensions_;
ExtensionManager extension_manager_;
AssemblyEditor assembly_editor_;
DungeonEditor dungeon_editor_;

View File

@@ -0,0 +1,49 @@
#ifndef YAZE_APP_EDITOR_SYSTEM_EXTENSION_MANAGER_H
#define YAZE_APP_EDITOR_SYSTEM_EXTENSION_MANAGER_H
#include <vector>
#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<yaze_extension*> 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