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 float GetPreferredWidth() const override { return 560.0f; }
58
59 // ==========================================================================
60 // WindowContent Drawing
61 // ==========================================================================
62
63 void Draw(bool* p_open) override;
64 void OnOpen() override {}
65 void OnClose() override {}
66
67 // ==========================================================================
68 // Component Accessors
69 // ==========================================================================
70
72 // ==========================================================================
73 // Context Management
74 // ==========================================================================
75
76 void SetCurrentRoom(int room_id) {
77 current_room_id_ = room_id;
79 }
80 void SetCanvasViewerProvider(std::function<DungeonCanvasViewer*()> provider) {
81 canvas_viewer_provider_ = std::move(provider);
82 }
84
87 rom_ = ctx.rom;
88 }
89
90 void SetGameData(zelda3::GameData* game_data) {
92 }
93
95
99
100 // ==========================================================================
101 // Programmatic Controls (for agents/automation)
102 // ==========================================================================
103
104 void SelectObject(int obj_id);
105 void SetAgentOptimizedLayout(bool enabled);
106
107 // Object operations
108 void CancelPlacement(); // Cancel current object placement
109
110 void SetToastManager(ToastManager* toast_manager) {
111 toast_manager_ = toast_manager;
112 }
113
114 // Show placement blockers through the shared toast surface when available.
115 // Called from DungeonEditorV2::HandleObjectPlaced on placement failure.
116 void SetPlacementError(const std::string& message);
117
118 void SetOpenObjectEditorCallback(std::function<void()> callback) {
119 open_object_editor_callback_ = std::move(callback);
120 }
121
122 private:
124
125 // Drawing methods
126 void DrawObjectSelector();
128
129 // ==========================================================================
130 // Member Variables
131 // ==========================================================================
132
133 Rom* rom_ = nullptr;
137
138 // Components
140 // UI state
141
142 // Selected object for placement
145 std::shared_ptr<zelda3::DungeonObjectEditor> object_editor_;
147
148 // Placement error feedback: toast-backed, with inline fallback for tests.
149 static constexpr double kPlacementErrorDuration = 2.0;
151 double placement_error_time_ = -1.0; // ImGui::GetTime() when error was set
152
153 std::function<void()> open_object_editor_callback_;
154};
155
156} // namespace editor
157} // namespace yaze
158
159#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.
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.