DungeonEditorV2 - Simplified dungeon editor using component delegation. More...
#include <dungeon_editor_v2.h>
Public Member Functions | |
DungeonEditorV2 (Rom *rom=nullptr) | |
void | Initialize (gfx::IRenderer *renderer, Rom *rom) |
void | Initialize () override |
absl::Status | Load () |
absl::Status | Update () override |
absl::Status | Undo () override |
absl::Status | Redo () override |
absl::Status | Cut () override |
absl::Status | Copy () override |
absl::Status | Paste () override |
absl::Status | Find () override |
absl::Status | Save () override |
void | set_rom (Rom *rom) |
Rom * | rom () const |
void | add_room (int room_id) |
void | FocusRoom (int room_id) |
bool | IsRomLoaded () const override |
std::string | GetRomStatus () const override |
![]() | |
Editor ()=default | |
virtual | ~Editor ()=default |
virtual absl::Status | Clear () |
EditorType | type () const |
void | set_context (EditorContext *context) |
bool * | active () |
void | set_active (bool active) |
Public Attributes | |
bool | show_room_selector_ = false |
bool | show_room_matrix_ = false |
bool | show_entrances_list_ = false |
bool | show_room_graphics_ = false |
bool | show_object_editor_ = false |
bool | show_palette_editor_ = false |
bool | show_debug_controls_ = false |
bool | show_control_panel_ = true |
Private Member Functions | |
void | DrawLayout () |
void | DrawRoomTab (int room_id) |
void | DrawToolset () |
void | DrawRoomMatrixCard () |
void | DrawRoomsListCard () |
void | DrawEntrancesListCard () |
void | DrawRoomGraphicsCard () |
void | DrawDebugControlsCard () |
void | DrawControlPanel () |
void | ProcessDeferredTextures () |
void | OnRoomSelected (int room_id) |
void | OnEntranceSelected (int entrance_id) |
Private Attributes | |
gfx::IRenderer * | renderer_ = nullptr |
Rom * | rom_ |
std::array< zelda3::Room, 0x128 > | rooms_ |
std::array< zelda3::RoomEntrance, 0x8C > | entrances_ |
int | current_entrance_id_ = 0 |
ImVector< int > | active_rooms_ |
std::unordered_map< int, std::shared_ptr< gui::EditorCard > > | room_cards_ |
int | current_room_id_ = 0 |
bool | control_panel_minimized_ = false |
gfx::SnesPalette | current_palette_ |
gfx::PaletteGroup | current_palette_group_ |
uint64_t | current_palette_id_ = 0 |
uint64_t | current_palette_group_id_ = 0 |
DungeonRoomLoader | room_loader_ |
DungeonRoomSelector | room_selector_ |
DungeonCanvasViewer | canvas_viewer_ |
DungeonObjectSelector | object_selector_ |
gui::DungeonObjectEmulatorPreview | object_emulator_preview_ |
gui::PaletteEditorWidget | palette_editor_ |
std::unique_ptr< ObjectEditorCard > | object_editor_card_ |
bool | is_loaded_ = false |
ImGuiWindowClass | room_window_class_ |
Additional Inherited Members | |
![]() | |
std::string | MakeCardTitle (const std::string &base_title) const |
template<typename T > | |
absl::StatusOr< T > | SafeRomAccess (std::function< T()> accessor, const std::string &operation="") const |
![]() | |
bool | active_ = false |
EditorType | type_ |
EditorContext * | context_ = nullptr |
DungeonEditorV2 - Simplified dungeon editor using component delegation.
This is a drop-in replacement for DungeonEditor that properly delegates to the component system instead of implementing everything inline.
Architecture:
The editor acts as a coordinator, not an implementer.
Definition at line 42 of file dungeon_editor_v2.h.
|
inlineexplicit |
Definition at line 44 of file dungeon_editor_v2.h.
References yaze::editor::kDungeon, and yaze::editor::Editor::type_.
void yaze::editor::DungeonEditorV2::Initialize | ( | gfx::IRenderer * | renderer, |
Rom * | rom | ||
) |
Definition at line 19 of file dungeon_editor_v2.cc.
References yaze::gui::EditorCardManager::Get(), ICON_MD_BUG_REPORT, ICON_MD_CASTLE, ICON_MD_CONSTRUCTION, ICON_MD_DOOR_FRONT, ICON_MD_GRID_VIEW, ICON_MD_IMAGE, ICON_MD_LIST, ICON_MD_PALETTE, renderer_, rom(), rom_, room_window_class_, show_control_panel_, show_debug_controls_, show_entrances_list_, show_object_editor_, show_palette_editor_, show_room_graphics_, show_room_matrix_, and show_room_selector_.
Referenced by yaze::editor::EditorManager::LoadAssets(), and yaze::test::TEST_F().
|
overridevirtual |
Implements yaze::editor::Editor.
Definition at line 113 of file dungeon_editor_v2.cc.
|
virtual |
Implements yaze::editor::Editor.
Definition at line 115 of file dungeon_editor_v2.cc.
References active_rooms_, ASSIGN_OR_RETURN, canvas_viewer_, yaze::gfx::CreatePaletteGroupFromLargePalette(), current_palette_, current_palette_group_, current_palette_group_id_, current_palette_id_, entrances_, yaze::gui::DungeonObjectEmulatorPreview::Initialize(), yaze::gui::PaletteEditorWidget::Initialize(), yaze::Rom::is_loaded(), is_loaded_, yaze::editor::DungeonRoomLoader::LoadRoomEntrances(), object_editor_card_, object_emulator_preview_, object_selector_, OnRoomSelected(), palette_editor_, yaze::Rom::palette_group(), renderer_, RETURN_IF_ERROR, rom_, room_loader_, room_selector_, rooms_, yaze::editor::DungeonRoomSelector::set_active_rooms(), yaze::editor::DungeonRoomSelector::set_entrances(), yaze::editor::DungeonRoomSelector::set_room_selected_callback(), yaze::editor::DungeonObjectSelector::set_rooms(), yaze::editor::DungeonRoomSelector::set_rooms(), yaze::editor::DungeonCanvasViewer::SetCurrentPaletteGroup(), yaze::editor::DungeonObjectSelector::SetCurrentPaletteGroup(), yaze::editor::DungeonCanvasViewer::SetCurrentPaletteId(), yaze::editor::DungeonObjectSelector::SetCurrentPaletteId(), yaze::gui::PaletteEditorWidget::SetOnPaletteChanged(), and yaze::editor::DungeonCanvasViewer::SetRooms().
Referenced by yaze::editor::EditorManager::LoadAssets(), yaze::test::TEST_F(), and yaze::test::TEST_F().
|
overridevirtual |
Implements yaze::editor::Editor.
Definition at line 169 of file dungeon_editor_v2.cc.
References yaze::gui::EditorCard::Begin(), control_panel_minimized_, DrawControlPanel(), DrawLayout(), yaze::gui::EditorCard::End(), ICON_MD_CASTLE, is_loaded_, room_window_class_, yaze::gui::EditorCard::SetDefaultSize(), and show_control_panel_.
|
inlineoverridevirtual |
Implements yaze::editor::Editor.
Definition at line 59 of file dungeon_editor_v2.h.
|
inlineoverridevirtual |
Implements yaze::editor::Editor.
Definition at line 60 of file dungeon_editor_v2.h.
|
inlineoverridevirtual |
Implements yaze::editor::Editor.
Definition at line 61 of file dungeon_editor_v2.h.
|
inlineoverridevirtual |
Implements yaze::editor::Editor.
Definition at line 62 of file dungeon_editor_v2.h.
|
inlineoverridevirtual |
Implements yaze::editor::Editor.
Definition at line 63 of file dungeon_editor_v2.h.
|
inlineoverridevirtual |
Implements yaze::editor::Editor.
Definition at line 64 of file dungeon_editor_v2.h.
|
overridevirtual |
Implements yaze::editor::Editor.
Definition at line 221 of file dungeon_editor_v2.cc.
References yaze::Rom::is_loaded(), LOG_ERROR, rom_, and rooms_.
Referenced by DrawDebugControlsCard(), and yaze::test::TEST_F().
|
inline |
Definition at line 68 of file dungeon_editor_v2.h.
References canvas_viewer_, yaze::gui::DungeonObjectEmulatorPreview::Initialize(), object_emulator_preview_, object_selector_, renderer_, rom(), rom_, room_loader_, room_selector_, yaze::editor::DungeonRoomSelector::set_rom(), yaze::editor::DungeonCanvasViewer::SetRom(), and yaze::editor::DungeonObjectSelector::SetRom().
Referenced by yaze::test::TEST_F(), and yaze::test::TEST_F().
|
inline |
Definition at line 76 of file dungeon_editor_v2.h.
References rom_.
Referenced by Initialize(), set_rom(), and yaze::test::TEST_F().
void yaze::editor::DungeonEditorV2::add_room | ( | int | room_id | ) |
Definition at line 527 of file dungeon_editor_v2.cc.
References OnRoomSelected().
Referenced by yaze::editor::EditorManager::JumpToDungeonRoom(), and yaze::editor::EditorManager::OpenEditorAndCardsFromFlags().
void yaze::editor::DungeonEditorV2::FocusRoom | ( | int | room_id | ) |
Definition at line 531 of file dungeon_editor_v2.cc.
References room_cards_.
Referenced by OnRoomSelected().
|
inlineoverridevirtual |
Reimplemented from yaze::editor::Editor.
Definition at line 83 of file dungeon_editor_v2.h.
References yaze::Rom::is_loaded(), and rom_.
Referenced by yaze::test::TEST_F().
|
inlineoverridevirtual |
Reimplemented from yaze::editor::Editor.
Definition at line 84 of file dungeon_editor_v2.h.
References yaze::Rom::is_loaded(), rom_, and yaze::Rom::title().
|
private |
Definition at line 338 of file dungeon_editor_v2.cc.
References active_rooms_, yaze::gui::EditorCard::Begin(), yaze::gui::PaletteEditorWidget::Draw(), DrawDebugControlsCard(), DrawEntrancesListCard(), DrawRoomGraphicsCard(), DrawRoomMatrixCard(), DrawRoomsListCard(), DrawRoomTab(), yaze::gui::EditorCard::End(), yaze::gui::EditorCard::Floating, ICON_MD_GRID_ON, ICON_MD_PALETTE, yaze::zelda3::kRoomNames, yaze::editor::Editor::MakeCardTitle(), object_editor_card_, palette_editor_, room_cards_, room_window_class_, show_debug_controls_, show_entrances_list_, show_object_editor_, show_palette_editor_, show_room_graphics_, show_room_matrix_, and show_room_selector_.
Referenced by Update().
|
private |
Definition at line 437 of file dungeon_editor_v2.cc.
References canvas_viewer_, yaze::editor::DungeonCanvasViewer::DrawDungeonCanvas(), ICON_MD_CHECK, ICON_MD_PENDING, yaze::editor::DungeonRoomLoader::LoadRoom(), LOG_DEBUG, room_loader_, and rooms_.
Referenced by DrawLayout().
|
private |
Definition at line 238 of file dungeon_editor_v2.cc.
References yaze::gui::Toolset::AddAction(), yaze::gui::Toolset::AddSeparator(), yaze::gui::Toolset::AddToggle(), yaze::gui::Toolset::Begin(), yaze::editor::DungeonRoomSelector::current_room_id(), yaze::gui::Toolset::End(), ICON_MD_ADD, ICON_MD_CONSTRUCTION, ICON_MD_DOOR_FRONT, ICON_MD_GRID_VIEW, ICON_MD_IMAGE, ICON_MD_LIST, ICON_MD_PALETTE, OnRoomSelected(), room_selector_, show_entrances_list_, show_object_editor_, show_palette_editor_, show_room_graphics_, show_room_matrix_, and show_room_selector_.
Referenced by DrawControlPanel().
|
private |
Definition at line 707 of file dungeon_editor_v2.cc.
References active_rooms_, yaze::gui::EditorCard::Begin(), current_room_id_, yaze::gui::EditorCard::End(), ICON_MD_GRID_VIEW, yaze::zelda3::kRoomNames, yaze::editor::Editor::MakeCardTitle(), OnRoomSelected(), yaze::gui::EditorCard::SetDefaultSize(), and show_room_matrix_.
Referenced by DrawLayout().
|
private |
Definition at line 539 of file dungeon_editor_v2.cc.
References yaze::gui::EditorCard::Begin(), current_room_id_, yaze::gui::EditorCard::End(), ICON_MD_LIST, ICON_MD_SEARCH, yaze::Rom::is_loaded(), yaze::zelda3::kRoomNames, yaze::editor::Editor::MakeCardTitle(), yaze::zelda3::NumberOfRooms, OnRoomSelected(), rom_, yaze::gui::EditorCard::SetDefaultSize(), and show_room_selector_.
Referenced by DrawLayout().
|
private |
Definition at line 606 of file dungeon_editor_v2.cc.
References yaze::gui::EditorCard::Begin(), current_entrance_id_, yaze::gui::EditorCard::End(), entrances_, ICON_MD_DOOR_FRONT, yaze::gui::InputHexByte(), yaze::gui::InputHexWord(), yaze::Rom::is_loaded(), yaze::zelda3::kEntranceNames, yaze::zelda3::kRoomNames, yaze::editor::Editor::MakeCardTitle(), OnEntranceSelected(), rom_, yaze::gui::EditorCard::SetDefaultSize(), and show_entrances_list_.
Referenced by DrawLayout().
|
private |
Definition at line 852 of file dungeon_editor_v2.cc.
References yaze::gui::EditorCard::Begin(), yaze::gfx::Arena::CREATE, 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::gui::EditorCard::End(), yaze::gfx::Arena::Get(), yaze::gfx::Arena::gfx_sheets(), ICON_MD_IMAGE, yaze::Rom::is_loaded(), yaze::editor::Editor::MakeCardTitle(), yaze::gfx::Arena::ProcessTextureQueue(), yaze::gfx::Arena::QueueTextureCommand(), yaze::gui::EditorCard::Right, rom_, rooms_, yaze::gui::EditorCard::SetDefaultSize(), yaze::gui::EditorCard::SetPosition(), show_room_graphics_, and yaze::gui::Canvas::zero_point().
Referenced by DrawLayout().
|
private |
Definition at line 952 of file dungeon_editor_v2.cc.
References active_rooms_, yaze::gui::EditorCard::Begin(), current_room_id_, yaze::util::LogManager::DisableDebugLogging(), yaze::util::LogManager::EnableDebugLogging(), yaze::gui::EditorCard::End(), yaze::gfx::Arena::Get(), yaze::util::LogManager::GetLogLevel(), ICON_MD_BUG_REPORT, ICON_MD_CLEANING_SERVICES, ICON_MD_CLOSE, ICON_MD_DELETE_SWEEP, ICON_MD_FLASH_ON, ICON_MD_IMAGE, ICON_MD_MEMORY, ICON_MD_REFRESH, ICON_MD_REPLAY, ICON_MD_SAVE, ICON_MD_TERMINAL, ICON_MD_TEXTURE, yaze::util::LogManager::instance(), yaze::util::LogManager::IsDebugEnabled(), yaze::editor::DungeonRoomLoader::LoadRoom(), LOG_ERROR, LOG_INFO, yaze::editor::Editor::MakeCardTitle(), yaze::gfx::Arena::ProcessTextureQueue(), renderer_, room_cards_, room_loader_, rooms_, Save(), yaze::gui::EditorCard::SetDefaultSize(), yaze::util::LogManager::SetLogLevel(), and show_debug_controls_.
Referenced by DrawLayout().
|
private |
Definition at line 277 of file dungeon_editor_v2.cc.
References control_panel_minimized_, DrawToolset(), ICON_MD_CASTLE, ICON_MD_MINIMIZE, show_control_panel_, show_debug_controls_, show_entrances_list_, show_object_editor_, show_palette_editor_, show_room_graphics_, show_room_matrix_, and show_room_selector_.
Referenced by Update().
|
private |
Definition at line 1090 of file dungeon_editor_v2.cc.
References yaze::gfx::Arena::Get(), yaze::gfx::Arena::ProcessTextureQueue(), and renderer_.
|
private |
Definition at line 498 of file dungeon_editor_v2.cc.
References active_rooms_, current_room_id_, FocusRoom(), room_selector_, and yaze::editor::DungeonRoomSelector::set_active_rooms().
Referenced by add_room(), DrawRoomMatrixCard(), DrawRoomsListCard(), DrawToolset(), Load(), and OnEntranceSelected().
|
private |
Definition at line 515 of file dungeon_editor_v2.cc.
References entrances_, and OnRoomSelected().
Referenced by DrawEntrancesListCard().
bool yaze::editor::DungeonEditorV2::show_room_selector_ = false |
Definition at line 91 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), DrawLayout(), DrawRoomsListCard(), DrawToolset(), Initialize(), and yaze::editor::EditorManager::OpenEditorAndCardsFromFlags().
bool yaze::editor::DungeonEditorV2::show_room_matrix_ = false |
Definition at line 92 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), DrawLayout(), DrawRoomMatrixCard(), DrawToolset(), Initialize(), and yaze::editor::EditorManager::OpenEditorAndCardsFromFlags().
bool yaze::editor::DungeonEditorV2::show_entrances_list_ = false |
Definition at line 93 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), DrawEntrancesListCard(), DrawLayout(), DrawToolset(), Initialize(), and yaze::editor::EditorManager::OpenEditorAndCardsFromFlags().
bool yaze::editor::DungeonEditorV2::show_room_graphics_ = false |
Definition at line 94 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), DrawLayout(), DrawRoomGraphicsCard(), DrawToolset(), Initialize(), and yaze::editor::EditorManager::OpenEditorAndCardsFromFlags().
bool yaze::editor::DungeonEditorV2::show_object_editor_ = false |
Definition at line 95 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), DrawLayout(), DrawToolset(), Initialize(), and yaze::editor::EditorManager::OpenEditorAndCardsFromFlags().
bool yaze::editor::DungeonEditorV2::show_palette_editor_ = false |
Definition at line 96 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), DrawLayout(), DrawToolset(), Initialize(), and yaze::editor::EditorManager::OpenEditorAndCardsFromFlags().
bool yaze::editor::DungeonEditorV2::show_debug_controls_ = false |
Definition at line 97 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), DrawDebugControlsCard(), DrawLayout(), and Initialize().
bool yaze::editor::DungeonEditorV2::show_control_panel_ = true |
Definition at line 98 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), Initialize(), and Update().
|
private |
Definition at line 101 of file dungeon_editor_v2.h.
Referenced by DrawDebugControlsCard(), Initialize(), Load(), ProcessDeferredTextures(), and set_rom().
|
private |
Definition at line 121 of file dungeon_editor_v2.h.
Referenced by DrawEntrancesListCard(), DrawRoomGraphicsCard(), DrawRoomsListCard(), GetRomStatus(), Initialize(), IsRomLoaded(), Load(), rom(), Save(), and set_rom().
|
private |
Definition at line 122 of file dungeon_editor_v2.h.
Referenced by DrawDebugControlsCard(), DrawRoomGraphicsCard(), DrawRoomTab(), Load(), and Save().
|
private |
Definition at line 123 of file dungeon_editor_v2.h.
Referenced by DrawEntrancesListCard(), Load(), and OnEntranceSelected().
|
private |
Definition at line 126 of file dungeon_editor_v2.h.
Referenced by DrawEntrancesListCard().
|
private |
Definition at line 129 of file dungeon_editor_v2.h.
Referenced by DrawDebugControlsCard(), DrawLayout(), DrawRoomMatrixCard(), Load(), and OnRoomSelected().
|
private |
Definition at line 130 of file dungeon_editor_v2.h.
Referenced by DrawDebugControlsCard(), DrawLayout(), and FocusRoom().
|
private |
Definition at line 131 of file dungeon_editor_v2.h.
Referenced by DrawDebugControlsCard(), DrawRoomGraphicsCard(), DrawRoomMatrixCard(), DrawRoomsListCard(), and OnRoomSelected().
|
private |
Definition at line 133 of file dungeon_editor_v2.h.
Referenced by DrawControlPanel(), and Update().
|
private |
Definition at line 136 of file dungeon_editor_v2.h.
Referenced by Load().
|
private |
Definition at line 137 of file dungeon_editor_v2.h.
Referenced by Load().
|
private |
Definition at line 138 of file dungeon_editor_v2.h.
Referenced by Load().
|
private |
Definition at line 139 of file dungeon_editor_v2.h.
Referenced by Load().
|
private |
Definition at line 142 of file dungeon_editor_v2.h.
Referenced by DrawDebugControlsCard(), DrawRoomTab(), Load(), and set_rom().
|
private |
Definition at line 143 of file dungeon_editor_v2.h.
Referenced by DrawToolset(), Load(), OnRoomSelected(), and set_rom().
|
private |
Definition at line 144 of file dungeon_editor_v2.h.
Referenced by DrawRoomTab(), Load(), and set_rom().
|
private |
Definition at line 145 of file dungeon_editor_v2.h.
|
private |
Definition at line 146 of file dungeon_editor_v2.h.
|
private |
Definition at line 147 of file dungeon_editor_v2.h.
Referenced by DrawLayout(), and Load().
|
private |
Definition at line 148 of file dungeon_editor_v2.h.
Referenced by DrawLayout(), and Load().
|
private |
Definition at line 150 of file dungeon_editor_v2.h.
|
private |
Definition at line 153 of file dungeon_editor_v2.h.
Referenced by DrawLayout(), Initialize(), and Update().