refactor: Implement session-aware card titles for multi-session support

- Added a helper method, MakeCardTitle, to generate session-aware titles for editor cards based on the current session context.
- Updated various editor files to utilize the new MakeCardTitle method, ensuring consistent card naming across multiple sessions.
- Refactored card initialization in AssemblyEditor, GraphicsEditor, DungeonEditorV2, OverworldEditor, and SpriteEditor to support dynamic session titles, enhancing user experience and clarity.
This commit is contained in:
scawful
2025-10-06 00:36:24 -04:00
parent dd56addd5e
commit 939df9fa3d
7 changed files with 47 additions and 30 deletions

View File

@@ -128,14 +128,17 @@ void DungeonEditorV2::DrawLayout() {
int room_id = active_rooms_[i];
bool open = true;
std::string card_name_str;
const char* card_name;
// Create session-aware card title
std::string base_name;
if (room_id >= 0 && static_cast<size_t>(room_id) < std::size(zelda3::kRoomNames)) {
card_name_str = absl::StrFormat("%s###RoomCard%d", zelda3::kRoomNames[room_id].data(), room_id);
base_name = absl::StrFormat("%s", zelda3::kRoomNames[room_id].data());
} else {
card_name_str = absl::StrFormat("Room %03X###RoomCard%d", room_id, room_id);
base_name = absl::StrFormat("Room %03X", room_id);
}
card_name = card_name_str.c_str();
std::string card_name_str = absl::StrFormat("%s###RoomCard%d",
MakeCardTitle(base_name).c_str(), room_id);
const char* card_name = card_name_str.c_str();
gui::EditorCard room_card(card_name, ICON_MD_GRID_ON, &open);
if (room_card.Begin()) {