Handles object selection, preview, and editing UI. More...
#include <dungeon_object_selector.h>
Public Member Functions | |
DungeonObjectSelector (Rom *rom=nullptr) | |
void | DrawTileSelector () |
void | DrawObjectRenderer () |
void | DrawIntegratedEditingPanels () |
void | Draw () |
void | set_rom (Rom *rom) |
void | SetRom (Rom *rom) |
Rom * | rom () const |
void | set_dungeon_editor_system (std::unique_ptr< zelda3::DungeonEditorSystem > *system) |
void | set_object_editor (std::unique_ptr< zelda3::DungeonObjectEditor > *editor) |
void | set_rooms (std::array< zelda3::Room, 0x128 > *rooms) |
void | set_current_room_id (int room_id) |
void | set_current_palette_group_id (uint64_t id) |
void | SetCurrentPaletteGroup (const gfx::PaletteGroup &palette_group) |
void | SetCurrentPaletteId (uint64_t palette_id) |
void | SetObjectSelectedCallback (std::function< void(const zelda3::RoomObject &)> callback) |
void | SetObjectPlacementCallback (std::function< void(const zelda3::RoomObject &)> callback) |
const zelda3::RoomObject & | GetPreviewObject () const |
bool | IsObjectLoaded () const |
Private Member Functions | |
void | DrawRoomGraphics () |
void | DrawObjectBrowser () |
void | DrawCompactObjectEditor () |
void | DrawCompactSpriteEditor () |
ImU32 | GetObjectTypeColor (int object_id) |
std::string | GetObjectTypeSymbol (int object_id) |
void | RenderObjectPrimitive (const zelda3::RoomObject &object, int x, int y) |
void | DrawObjectAssetBrowser () |
bool | MatchesObjectFilter (int obj_id, int filter_type) |
void | CalculateObjectDimensions (const zelda3::RoomObject &object, int &width, int &height) |
void | PlaceObjectAtPosition (int x, int y) |
void | DrawCompactItemEditor () |
void | DrawCompactEntranceEditor () |
void | DrawCompactDoorEditor () |
void | DrawCompactChestEditor () |
void | DrawCompactPropertiesEditor () |
Private Attributes | |
Rom * | rom_ = nullptr |
gui::Canvas | room_gfx_canvas_ {"##RoomGfxCanvas", ImVec2(0x100 + 1, 0x10 * 0x40 + 1)} |
gui::Canvas | object_canvas_ |
std::unique_ptr< zelda3::DungeonEditorSystem > * | dungeon_editor_system_ = nullptr |
zelda3::DungeonObjectEditor * | object_editor_ = nullptr |
std::array< zelda3::Room, 0x128 > * | rooms_ = nullptr |
int | current_room_id_ = 0 |
uint64_t | current_palette_group_id_ = 0 |
uint64_t | current_palette_id_ = 0 |
gfx::PaletteGroup | current_palette_group_ |
zelda3::RoomObject | preview_object_ {0, 0, 0, 0, 0} |
gfx::SnesPalette | preview_palette_ |
bool | object_loaded_ = false |
std::function< void(const zelda3::RoomObject &)> | object_selected_callback_ |
std::function< void(const zelda3::RoomObject &)> | object_placement_callback_ |
int | selected_object_id_ = -1 |
Handles object selection, preview, and editing UI.
Definition at line 18 of file dungeon_object_selector.h.
|
inlineexplicit |
Definition at line 20 of file dungeon_object_selector.h.
void yaze::editor::DungeonObjectSelector::DrawTileSelector | ( | ) |
Definition at line 26 of file dungeon_object_selector.cc.
References DrawObjectRenderer(), and DrawRoomGraphics().
void yaze::editor::DungeonObjectSelector::DrawObjectRenderer | ( | ) |
Definition at line 46 of file dungeon_object_selector.cc.
References yaze::gui::Canvas::DrawBackground(), yaze::gui::Canvas::DrawContextMenu(), yaze::gui::Canvas::DrawGrid(), DrawObjectAssetBrowser(), yaze::gui::Canvas::DrawOverlay(), yaze::zelda3::RoomObject::id_, yaze::zelda3::RoomObject::layer_, object_canvas_, object_loaded_, PlaceObjectAtPosition(), preview_object_, RenderObjectPrimitive(), yaze::zelda3::RoomObject::size_, yaze::zelda3::RoomObject::x_, and yaze::zelda3::RoomObject::y_.
Referenced by Draw(), and DrawTileSelector().
void yaze::editor::DungeonObjectSelector::DrawIntegratedEditingPanels | ( | ) |
Definition at line 363 of file dungeon_object_selector.cc.
References DrawCompactChestEditor(), DrawCompactDoorEditor(), DrawCompactEntranceEditor(), DrawCompactItemEditor(), DrawCompactObjectEditor(), DrawCompactPropertiesEditor(), DrawCompactSpriteEditor(), dungeon_editor_system_, and object_editor_.
Referenced by Draw().
void yaze::editor::DungeonObjectSelector::Draw | ( | ) |
Definition at line 283 of file dungeon_object_selector.cc.
References DrawIntegratedEditingPanels(), DrawObjectRenderer(), and DrawRoomGraphics().
|
inline |
|
inline |
Definition at line 30 of file dungeon_object_selector.h.
Referenced by yaze::editor::DungeonEditorV2::set_rom().
|
inline |
Definition at line 33 of file dungeon_object_selector.h.
References rom_.
|
inline |
Definition at line 36 of file dungeon_object_selector.h.
References dungeon_editor_system_.
|
inline |
Definition at line 39 of file dungeon_object_selector.h.
References object_editor_.
|
inline |
Definition at line 44 of file dungeon_object_selector.h.
References rooms_.
Referenced by yaze::editor::DungeonEditorV2::Load().
|
inline |
Definition at line 45 of file dungeon_object_selector.h.
References current_room_id_.
|
inline |
Definition at line 48 of file dungeon_object_selector.h.
References current_palette_group_id_.
|
inline |
Definition at line 49 of file dungeon_object_selector.h.
References current_palette_group_.
Referenced by yaze::editor::DungeonEditorV2::Load().
|
inline |
Definition at line 50 of file dungeon_object_selector.h.
References current_palette_id_.
Referenced by yaze::editor::DungeonEditorV2::Load().
|
inline |
Definition at line 53 of file dungeon_object_selector.h.
References object_selected_callback_.
|
inline |
Definition at line 57 of file dungeon_object_selector.h.
References object_placement_callback_.
|
inline |
Definition at line 62 of file dungeon_object_selector.h.
References preview_object_.
|
inline |
Definition at line 63 of file dungeon_object_selector.h.
References object_loaded_.
|
private |
Definition at line 307 of file dungeon_object_selector.cc.
References current_room_id_, yaze::gui::Canvas::draw_list(), yaze::gui::Canvas::DrawBackground(), yaze::gui::Canvas::DrawContextMenu(), yaze::gui::Canvas::DrawGrid(), yaze::gui::Canvas::DrawOverlay(), yaze::gui::Canvas::DrawTileSelector(), yaze::gfx::Arena::Get(), yaze::gfx::Arena::gfx_sheets(), yaze::gui::Canvas::height(), yaze::Rom::is_loaded(), rom_, room_gfx_canvas_, rooms_, yaze::gui::Canvas::width(), and yaze::gui::Canvas::zero_point().
Referenced by Draw(), and DrawTileSelector().
|
private |
Definition at line 121 of file dungeon_object_selector.cc.
References current_palette_group_id_, GetObjectTypeColor(), GetObjectTypeSymbol(), yaze::Rom::is_loaded(), yaze::zelda3::RoomObject::layer_, object_loaded_, object_selected_callback_, yaze::Rom::palette_group(), preview_object_, preview_palette_, rom_, and yaze::zelda3::RoomObject::size_.
|
private |
Definition at line 417 of file dungeon_object_selector.cc.
References yaze::zelda3::DungeonObjectEditor::kEdit, yaze::zelda3::DungeonObjectEditor::kInsert, yaze::zelda3::DungeonObjectEditor::kSelect, and object_editor_.
Referenced by DrawIntegratedEditingPanels().
|
private |
Definition at line 721 of file dungeon_object_selector.cc.
References dungeon_editor_system_, yaze::zelda3::DungeonEditorSystem::kEnemy, yaze::zelda3::DungeonEditorSystem::SpriteData::layer, yaze::zelda3::DungeonEditorSystem::SpriteData::sprite_id, yaze::zelda3::DungeonEditorSystem::SpriteData::type, yaze::zelda3::DungeonEditorSystem::SpriteData::x, and yaze::zelda3::DungeonEditorSystem::SpriteData::y.
Referenced by DrawIntegratedEditingPanels().
|
private |
Definition at line 486 of file dungeon_object_selector.cc.
Referenced by DrawObjectAssetBrowser(), DrawObjectBrowser(), and RenderObjectPrimitive().
|
private |
Definition at line 507 of file dungeon_object_selector.cc.
Referenced by DrawObjectAssetBrowser(), and DrawObjectBrowser().
|
private |
Definition at line 528 of file dungeon_object_selector.cc.
References CalculateObjectDimensions(), yaze::gui::Canvas::DrawRect(), yaze::gui::Canvas::DrawText(), GetObjectTypeColor(), and object_canvas_.
Referenced by DrawObjectRenderer().
|
private |
Definition at line 546 of file dungeon_object_selector.cc.
References current_palette_group_id_, GetObjectTypeColor(), GetObjectTypeSymbol(), MatchesObjectFilter(), object_loaded_, object_selected_callback_, yaze::Rom::palette_group(), preview_object_, preview_palette_, rom_, selected_object_id_, and yaze::zelda3::RoomObject::set_rom().
Referenced by DrawObjectRenderer().
|
private |
Definition at line 652 of file dungeon_object_selector.cc.
Referenced by DrawObjectAssetBrowser().
|
private |
Definition at line 671 of file dungeon_object_selector.cc.
Referenced by RenderObjectPrimitive().
|
private |
Definition at line 707 of file dungeon_object_selector.cc.
References object_loaded_, object_placement_callback_, preview_object_, and yaze::zelda3::RoomObject::set_x().
Referenced by DrawObjectRenderer().
|
private |
Definition at line 781 of file dungeon_object_selector.cc.
References dungeon_editor_system_, yaze::zelda3::DungeonEditorSystem::ItemData::is_hidden, yaze::zelda3::DungeonEditorSystem::ItemData::item_id, yaze::zelda3::DungeonEditorSystem::kKey, yaze::zelda3::DungeonEditorSystem::ItemData::room_id, yaze::zelda3::DungeonEditorSystem::ItemData::type, yaze::zelda3::DungeonEditorSystem::ItemData::x, and yaze::zelda3::DungeonEditorSystem::ItemData::y.
Referenced by DrawIntegratedEditingPanels().
|
private |
Definition at line 842 of file dungeon_object_selector.cc.
References dungeon_editor_system_.
Referenced by DrawIntegratedEditingPanels().
|
private |
Definition at line 894 of file dungeon_object_selector.cc.
References yaze::zelda3::DungeonEditorSystem::DoorData::direction, dungeon_editor_system_, yaze::zelda3::DungeonEditorSystem::DoorData::is_locked, yaze::zelda3::DungeonEditorSystem::DoorData::key_type, yaze::zelda3::DungeonEditorSystem::DoorData::requires_key, yaze::zelda3::DungeonEditorSystem::DoorData::room_id, yaze::zelda3::DungeonEditorSystem::DoorData::target_room_id, yaze::zelda3::DungeonEditorSystem::DoorData::target_x, yaze::zelda3::DungeonEditorSystem::DoorData::target_y, yaze::zelda3::DungeonEditorSystem::DoorData::x, and yaze::zelda3::DungeonEditorSystem::DoorData::y.
Referenced by DrawIntegratedEditingPanels().
|
private |
Definition at line 955 of file dungeon_object_selector.cc.
References dungeon_editor_system_, chest::x, and chest::y.
Referenced by DrawIntegratedEditingPanels().
|
private |
Definition at line 1012 of file dungeon_object_selector.cc.
References dungeon_editor_system_, yaze::zelda3::DungeonEditorSystem::RoomProperties::dungeon_id, yaze::zelda3::DungeonEditorSystem::RoomProperties::floor_level, yaze::zelda3::DungeonEditorSystem::RoomProperties::is_boss_room, yaze::zelda3::DungeonEditorSystem::RoomProperties::is_save_room, yaze::zelda3::DungeonEditorSystem::RoomProperties::music_id, yaze::zelda3::DungeonEditorSystem::RoomProperties::name, and yaze::zelda3::DungeonEditorSystem::RoomProperties::room_id.
Referenced by DrawIntegratedEditingPanels().
|
private |
Definition at line 87 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), DrawObjectBrowser(), DrawRoomGraphics(), rom(), set_rom(), and SetRom().
|
private |
Definition at line 88 of file dungeon_object_selector.h.
Referenced by DrawRoomGraphics().
|
private |
Definition at line 89 of file dungeon_object_selector.h.
Referenced by DrawObjectRenderer(), and RenderObjectPrimitive().
|
private |
Definition at line 93 of file dungeon_object_selector.h.
Referenced by DrawCompactChestEditor(), DrawCompactDoorEditor(), DrawCompactEntranceEditor(), DrawCompactItemEditor(), DrawCompactPropertiesEditor(), DrawCompactSpriteEditor(), DrawIntegratedEditingPanels(), and set_dungeon_editor_system().
|
private |
Definition at line 94 of file dungeon_object_selector.h.
Referenced by DrawCompactObjectEditor(), DrawIntegratedEditingPanels(), and set_object_editor().
|
private |
Definition at line 97 of file dungeon_object_selector.h.
Referenced by DrawRoomGraphics(), and set_rooms().
|
private |
Definition at line 98 of file dungeon_object_selector.h.
Referenced by DrawRoomGraphics(), and set_current_room_id().
|
private |
Definition at line 101 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), DrawObjectBrowser(), and set_current_palette_group_id().
|
private |
Definition at line 102 of file dungeon_object_selector.h.
Referenced by SetCurrentPaletteId().
|
private |
Definition at line 103 of file dungeon_object_selector.h.
Referenced by SetCurrentPaletteGroup().
|
private |
Definition at line 106 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), DrawObjectBrowser(), DrawObjectRenderer(), GetPreviewObject(), and PlaceObjectAtPosition().
|
private |
Definition at line 107 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), and DrawObjectBrowser().
|
private |
Definition at line 108 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), DrawObjectBrowser(), DrawObjectRenderer(), IsObjectLoaded(), and PlaceObjectAtPosition().
|
private |
Definition at line 111 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), DrawObjectBrowser(), and SetObjectSelectedCallback().
|
private |
Definition at line 112 of file dungeon_object_selector.h.
Referenced by PlaceObjectAtPosition(), and SetObjectPlacementCallback().
|
private |
Definition at line 115 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser().