1#ifndef YAZE_APP_EDITOR_DUNGEON_PANELS_OBJECT_EDITOR_PANEL_H_
2#define YAZE_APP_EDITOR_DUNGEON_PANELS_OBJECT_EDITOR_PANEL_H_
5#include <unordered_map>
51 std::shared_ptr<zelda3::DungeonObjectEditor> object_editor =
nullptr);
57 std::string
GetId()
const override {
return "dungeon.object_editor"; }
67 void Draw(
bool* p_open)
override;
108 void SetRooms(std::array<zelda3::Room, 0x128>* rooms) {
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Handles object selection, preview, and editing UI.
void set_current_room_id(int room_id)
void set_rooms(std::array< zelda3::Room, 0x128 > *rooms)
void SetContext(EditorContext ctx)
void SetGameData(zelda3::GameData *game_data)
void SetCurrentPaletteGroup(const gfx::PaletteGroup &palette_group)
Base interface for all logical panel components.
Unified panel for dungeon object editing.
gui::DungeonObjectEmulatorPreview & emulator_preview()
DungeonCanvasViewer * canvas_viewer_
int GetPriority() const override
Get display priority for menu ordering.
std::string GetIcon() const override
Material Design icon for this panel.
void SetCanvasViewer(DungeonCanvasViewer *viewer)
bool show_interaction_controls_
void OnClose() override
Called when panel is hidden.
gfx::Bitmap static_preview_bitmap_
void DrawStaticObjectEditor()
std::string GetId() const override
Unique identifier for this panel.
zelda3::RoomObject preview_object_
void SetCurrentPaletteGroup(const gfx::PaletteGroup &group)
void SetGameData(zelda3::GameData *game_data)
bool IsStaticEditorOpen() const
bool show_delete_confirmation_modal_
bool show_emulator_preview_
void SelectObject(int obj_id)
gui::Canvas static_preview_canvas_
ObjectEditorPanel(gfx::IRenderer *renderer, Rom *rom, DungeonCanvasViewer *canvas_viewer, std::shared_ptr< zelda3::DungeonObjectEditor > object_editor=nullptr)
void DeleteSelectedObjects()
void OnSelectionChanged()
void DrawObjectSelector()
size_t cached_selection_count_
std::string GetDisplayName() const override
Human-readable name shown in menus and title bars.
DungeonObjectSelector object_selector_
std::unique_ptr< zelda3::ObjectParser > object_parser_
void DeselectAllObjects()
std::unordered_map< int, gui::Canvas > object_preview_canvases_
void NudgeSelectedObjects(int dx, int dy)
bool static_preview_rendered_
void DrawSelectedObjectInfo()
void OnOpen() override
Called when panel becomes visible.
zelda3::DoorType selected_door_type_
gui::DungeonObjectEmulatorPreview emulator_preview_
void CloseStaticObjectEditor()
void SetContext(EditorContext ctx)
gfx::IRenderer * renderer_
bool door_placement_mode_
bool show_template_creation_modal_
int GetStaticEditorObjectId() const
bool selection_callbacks_setup_
void ScrollToObject(size_t index)
gfx::BackgroundBuffer static_preview_buffer_
void SetCurrentRoom(int room_id)
void SetRooms(std::array< zelda3::Room, 0x128 > *rooms)
void OpenStaticObjectEditor(int object_id)
void Draw(bool *p_open) override
Draw the panel content.
DungeonObjectSelector & object_selector()
std::shared_ptr< zelda3::DungeonObjectEditor > object_editor_
void CycleObjectSelection(int direction)
std::string GetEditorCategory() const override
Editor category this panel belongs to.
void DrawEmulatorPreview()
void CopySelectedObjects()
void SetupSelectionCallbacks()
void SetAgentOptimizedLayout(bool enabled)
int static_editor_object_id_
void DuplicateSelectedObjects()
zelda3::ObjectDrawInfo static_editor_draw_info_
void HandleKeyboardShortcuts()
Represents a bitmap image optimized for SNES ROM hacking.
Defines an abstract interface for all rendering operations.
Modern, robust canvas for drawing and manipulating graphics.
void SetGameData(zelda3::GameData *game_data)
#define ICON_MD_CONSTRUCTION
DoorType
Door types from ALTTP.
@ NormalDoor
Normal door (upper layer)
Lightweight view into the essential runtime context (Rom + GameData)
zelda3::GameData * game_data
Represents a group of palettes.
Draw routine information for object rendering.