add ExtensionManager implementation

This commit is contained in:
scawful
2024-08-10 20:10:39 -04:00
parent 36258cf64a
commit 9cea919246
4 changed files with 43 additions and 27 deletions

View File

@@ -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
)

View File

@@ -0,0 +1,37 @@
#include "extension_manager.h"
#include <vector>
#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

View File

@@ -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<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
} // namespace yaze
#endif // YAZE_APP_EDITOR_SYSTEM_EXTENSION_MANAGER_H

View File

@@ -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);