yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
object_selector_content.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_SELECTORS_OBJECT_SELECTOR_CONTENT_H_
2#define YAZE_APP_EDITOR_DUNGEON_SELECTORS_OBJECT_SELECTOR_CONTENT_H_
3
4#include <functional>
5#include <memory>
6#include <string>
7
10#include "app/editor/editor.h"
13#include "app/gui/core/icons.h"
14#include "rom/rom.h"
18#include "zelda3/game_data.h"
19
20namespace yaze {
21namespace editor {
22
23class ToastManager;
24
42 public:
44 Rom* rom, DungeonCanvasViewer* canvas_viewer,
45 std::shared_ptr<zelda3::DungeonObjectEditor> object_editor = nullptr,
46 ToastManager* toast_manager = nullptr);
47
48 // ==========================================================================
49 // WindowContent Identity
50 // ==========================================================================
51
52 std::string GetId() const override { return "dungeon.object_selector"; }
53 std::string GetDisplayName() const override { return "Object Selector"; }
54 std::string GetIcon() const override { return ICON_MD_CONSTRUCTION; }
55 std::string GetEditorCategory() const override { return "Dungeon"; }
56 int GetPriority() const override { return 60; }
57 std::string GetWorkflowGroup() const override { return "Editors"; }
58 float GetPreferredWidth() const override { return 560.0f; }
59
60 // ==========================================================================
61 // WindowContent Drawing
62 // ==========================================================================
63
64 void Draw(bool* p_open) override;
65 void OnOpen() override {}
66 void OnClose() override {}
67
68 // ==========================================================================
69 // Component Accessors
70 // ==========================================================================
71
73 // ==========================================================================
74 // Context Management
75 // ==========================================================================
76
77 void SetCurrentRoom(int room_id) {
78 current_room_id_ = room_id;
80 }
81 void SetCanvasViewerProvider(std::function<DungeonCanvasViewer*()> provider) {
82 canvas_viewer_provider_ = std::move(provider);
83 }
85
88 rom_ = ctx.rom;
89 }
90
91 void SetGameData(zelda3::GameData* game_data) {
93 }
94
96
100
101 // ==========================================================================
102 // Programmatic Controls (for agents/automation)
103 // ==========================================================================
104
105 void SelectObject(int obj_id);
106 void SetAgentOptimizedLayout(bool enabled);
107
108 // Object operations
109 void CancelPlacement(); // Cancel current object placement
110
111 void SetToastManager(ToastManager* toast_manager) {
112 toast_manager_ = toast_manager;
113 }
114
115 // Show placement blockers through the shared toast surface when available.
116 // Called from DungeonEditorV2::HandleObjectPlaced on placement failure.
117 void SetPlacementError(const std::string& message);
118
119 void SetOpenObjectEditorCallback(std::function<void()> callback) {
120 open_object_editor_callback_ = std::move(callback);
121 }
123
124 private:
126
127 // Drawing methods
128 void DrawObjectSelector();
130
131 // ==========================================================================
132 // Member Variables
133 // ==========================================================================
134
135 Rom* rom_ = nullptr;
139
140 // Components
142 // UI state
143
144 // Selected object for placement
147 std::shared_ptr<zelda3::DungeonObjectEditor> object_editor_;
149
150 // Placement error feedback: toast-backed, with inline fallback for tests.
151 static constexpr double kPlacementErrorDuration = 2.0;
153 double placement_error_time_ = -1.0; // ImGui::GetTime() when error was set
154
155 std::function<void()> open_object_editor_callback_;
156};
157
158} // namespace editor
159} // namespace yaze
160
161#endif // YAZE_APP_EDITOR_DUNGEON_SELECTORS_OBJECT_SELECTOR_CONTENT_H_
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:28
Handles object selection, preview, and editing UI.
void SetGameData(zelda3::GameData *game_data)
void set_rooms(DungeonRoomStore *rooms)
void SetCurrentPaletteGroup(const gfx::PaletteGroup &palette_group)
Browse and place dungeon objects.
float GetPreferredWidth() const override
Get preferred width for this panel (optional)
std::string GetIcon() const override
Material Design icon for this panel.
void SetPlacementError(const std::string &message)
void SetOpenObjectEditorCallback(std::function< void()> callback)
void SetCanvasViewer(DungeonCanvasViewer *viewer)
std::function< DungeonCanvasViewer *()> canvas_viewer_provider_
std::string GetDisplayName() const override
Human-readable name shown in menus and title bars.
void SetRooms(DungeonRoomStore *rooms)
void SetCanvasViewerProvider(std::function< DungeonCanvasViewer *()> provider)
void SetGameData(zelda3::GameData *game_data)
std::shared_ptr< zelda3::DungeonObjectEditor > object_editor_
void SetCurrentPaletteGroup(const gfx::PaletteGroup &group)
ObjectSelectorContent(Rom *rom, DungeonCanvasViewer *canvas_viewer, std::shared_ptr< zelda3::DungeonObjectEditor > object_editor=nullptr, ToastManager *toast_manager=nullptr)
std::string GetId() const override
Unique identifier for this panel.
void OnOpen() override
Called when panel becomes visible.
void OnClose() override
Called when panel is hidden.
std::string GetEditorCategory() const override
Editor category this panel belongs to.
int GetPriority() const override
Get display priority for menu ordering.
std::string GetWorkflowGroup() const override
Optional workflow group for hack-centric actions.
void Draw(bool *p_open) override
Draw the panel content.
void SetToastManager(ToastManager *toast_manager)
Base interface for all logical window content components.
#define ICON_MD_CONSTRUCTION
Definition icons.h:458
Lightweight view into the essential runtime context (Rom + GameData)
Definition editor.h:72
Represents a group of palettes.