From 94a05e6ea7003828249a180cb49ea1939eaf6c33 Mon Sep 17 00:00:00 2001 From: scawful Date: Fri, 8 Nov 2024 00:14:01 -0500 Subject: [PATCH] Enhance dungeon map functionality by adding buttons to manage floors and basements, and optimize tile rendering logic for improved performance --- src/app/editor/graphics/screen_editor.cc | 36 ++++++++++++++++++++---- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/src/app/editor/graphics/screen_editor.cc b/src/app/editor/graphics/screen_editor.cc index e9500139..6ca8fa07 100644 --- a/src/app/editor/graphics/screen_editor.cc +++ b/src/app/editor/graphics/screen_editor.cc @@ -248,7 +248,7 @@ absl::Status ScreenEditor::LoadDungeonMapTile16() { } void ScreenEditor::DrawDungeonMapsTabs() { - auto current_dungeon = dungeon_maps_[selected_dungeon]; + auto& current_dungeon = dungeon_maps_[selected_dungeon]; if (ImGui::BeginTabBar("##DungeonMapTabs")) { auto nbr_floors = current_dungeon.nbr_of_floor + current_dungeon.nbr_of_basement; @@ -274,10 +274,10 @@ void ScreenEditor::DrawDungeonMapsTabs() { int posY = ((j / 5) * 32); if (tile16_individual_.count(tile16_id) == 0) { - auto tile = tile16_sheet_.GetTile16(tile16_id); - std::cout << "Tile16: " << tile16_id << std::endl; - Renderer::GetInstance().RenderBitmap(&tile); - tile16_individual_[tile16_id] = tile; + tile16_individual_[tile16_id] = + tile16_sheet_.GetTile16(tile16_id); + Renderer::GetInstance().RenderBitmap( + &tile16_individual_[tile16_id]); } screen_canvas_.DrawBitmap(tile16_individual_[tile16_id], (posX * 2), (posY * 2), 4.0f); @@ -313,6 +313,32 @@ void ScreenEditor::DrawDungeonMapsTabs() { gui::InputHexWord("Boss Room", ¤t_dungeon.boss_room); + // Add Floor Button + if (ImGui::Button("Add Floor", ImVec2(100, 0)) && + current_dungeon.nbr_of_floor < 8) { + current_dungeon.nbr_of_floor++; + dungeon_map_labels_[selected_dungeon].emplace_back(); + } + ImGui::SameLine(); + if (ImGui::Button("Remove Floor", ImVec2(100, 0)) && + current_dungeon.nbr_of_floor > 0) { + current_dungeon.nbr_of_floor--; + dungeon_map_labels_[selected_dungeon].pop_back(); + } + + // Add Basement Button + if (ImGui::Button("Add Basement", ImVec2(100, 0)) && + current_dungeon.nbr_of_basement < 8) { + current_dungeon.nbr_of_basement++; + dungeon_map_labels_[selected_dungeon].emplace_back(); + } + ImGui::SameLine(); + if (ImGui::Button("Remove Basement", ImVec2(100, 0)) && + current_dungeon.nbr_of_basement > 0) { + current_dungeon.nbr_of_basement--; + dungeon_map_labels_[selected_dungeon].pop_back(); + } + if (ImGui::Button("Copy Floor", ImVec2(100, 0))) { copy_button_pressed = true; }