From d0510ed0e6b4d01e94c26fa6fb35944d518dbc50 Mon Sep 17 00:00:00 2001 From: scawful Date: Sat, 10 Aug 2024 01:16:33 -0400 Subject: [PATCH] add yaze_command_registry, yaze_event_dispatcher, yaze_editor_context --- src/yaze.h | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/yaze.h b/src/yaze.h index a67748f8..8a569f07 100644 --- a/src/yaze.h +++ b/src/yaze.h @@ -8,13 +8,49 @@ extern "C" { #include #include +#include "base/overworld.h" #include "base/snes_color.h" #include "base/sprite.h" -#include "base/overworld.h" +typedef struct z3_rom z3_rom; typedef struct yaze_flags yaze_flags; typedef struct yaze_project yaze_project; -typedef struct z3_rom z3_rom; + +typedef struct yaze_command_registry yaze_command_registry; + +/** + * @brief Command registry. + */ +struct yaze_command_registry { + void (*register_command)(const char* name, void (*command)(void)); +}; + +typedef struct yaze_event_dispatcher yaze_event_dispatcher; + +/** + * @brief Event dispatcher. + */ +struct yaze_event_dispatcher { + void (*register_event_hook)(void (*event_hook)(void)); +}; + +typedef struct yaze_editor_context yaze_editor_context; + +/** + * @brief Extension editor context. + */ +struct yaze_editor_context { + yaze_project* project; + + yaze_command_registry* command_registry; + yaze_event_dispatcher* event_dispatcher; + + ImGuiContext* imgui_context; + ImGuiIO* imgui_io; + + void (*ShowDialog)(const char* title, const char* message); + void (*LogMessage)(const char* message); +}; /** * @brief Flags to initialize the Yaze library.