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 // The Workbench supplies the active placement inspector above this browser.
66 void DrawInWorkbench();
68 void OnOpen() override {}
69 void OnClose() override {}
70
71 // ==========================================================================
72 // Component Accessors
73 // ==========================================================================
74
76 // ==========================================================================
77 // Context Management
78 // ==========================================================================
79
80 void SetCurrentRoom(int room_id) {
81 current_room_id_ = room_id;
83 }
84 void SetCanvasViewerProvider(std::function<DungeonCanvasViewer*()> provider) {
85 canvas_viewer_provider_ = std::move(provider);
86 }
88
91 rom_ = ctx.rom;
92 }
93
94 void SetGameData(zelda3::GameData* game_data) {
96 }
97
99
103
104 // ==========================================================================
105 // Programmatic Controls (for agents/automation)
106 // ==========================================================================
107
108 void SelectObject(int obj_id);
109 void SetAgentOptimizedLayout(bool enabled);
110
111 // Object operations
112 void CancelPlacement(); // Cancel current object placement
113
114 void SetToastManager(ToastManager* toast_manager) {
115 toast_manager_ = toast_manager;
116 }
117
118 // Show placement blockers through the shared toast surface when available.
119 // Called from DungeonEditorV2::HandleObjectPlaced on placement failure.
120 void SetPlacementError(const std::string& message);
121
122 void SetOpenObjectEditorCallback(std::function<void()> callback) {
123 open_object_editor_callback_ = std::move(callback);
124 }
126
127 private:
129
130 // Drawing methods
131 void DrawObjectSelector(float minimum_grid_height = 1.0f);
132 void DrawContent(bool show_placement_summary);
133 void DrawInteractionSummary(bool show_placement_summary);
134
135 // ==========================================================================
136 // Member Variables
137 // ==========================================================================
138
139 Rom* rom_ = nullptr;
143
144 // Components
146 // UI state
147
148 // Selected object for placement
151 std::shared_ptr<zelda3::DungeonObjectEditor> object_editor_;
153
154 // Placement error feedback: toast-backed, with inline fallback for tests.
155 static constexpr double kPlacementErrorDuration = 2.0;
157 double placement_error_time_ = -1.0; // ImGui::GetTime() when error was set
158
159 std::function<void()> open_object_editor_callback_;
160};
161
162} // namespace editor
163} // namespace yaze
164
165#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:49
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.
void DrawObjectSelector(float minimum_grid_height=1.0f)
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 DrawContent(bool show_placement_summary)
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 DrawInteractionSummary(bool show_placement_summary)
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:73
Represents a group of palettes.