From 251db062d007eed330525b31c63c5cae95a285ab Mon Sep 17 00:00:00 2001 From: gir489 <100792176+gir489returns@users.noreply.github.com> Date: Mon, 30 Oct 2023 16:29:30 -0400 Subject: [PATCH] Added a delete button to Persist Vehicle. (#2354) --- src/services/vehicle/persist_car_service.cpp | 10 ++++++ src/services/vehicle/persist_car_service.hpp | 1 + src/views/vehicle/spawn/view_persist_car.cpp | 34 +++++++++++++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/services/vehicle/persist_car_service.cpp b/src/services/vehicle/persist_car_service.cpp index 38a741bc..f2e5d7a1 100644 --- a/src/services/vehicle/persist_car_service.cpp +++ b/src/services/vehicle/persist_car_service.cpp @@ -49,6 +49,16 @@ namespace big return spawn_vehicle_full(vehicle_json, self::ped, spawn_coords); } + void persist_car_service::delete_vehicle(std::string_view file_name, std::string folder_name) + { + const auto file = check_vehicle_folder(folder_name).get_file(file_name); + + if (file.exists()) + { + std::filesystem::remove(file.get_path()); + } + } + std::vector persist_car_service::list_files(std::string folder_name) { std::vector file_paths; diff --git a/src/services/vehicle/persist_car_service.hpp b/src/services/vehicle/persist_car_service.hpp index 0b267c1c..33cc1caf 100644 --- a/src/services/vehicle/persist_car_service.hpp +++ b/src/services/vehicle/persist_car_service.hpp @@ -13,6 +13,7 @@ namespace big static Vehicle clone_ped_car(Ped ped, Vehicle vehicle); static void save_vehicle(Vehicle vehicle, std::string_view file_name, std::string folder_name); static Vehicle load_vehicle(std::string_view file_name, std::string folder_name = "", const std::optional& = std::nullopt); + static void delete_vehicle(std::string_view file_name, std::string folder_name); private: static constexpr auto model_attachment_key = "model_attachment"; diff --git a/src/views/vehicle/spawn/view_persist_car.cpp b/src/views/vehicle/spawn/view_persist_car.cpp index 99751295..4ecdf389 100644 --- a/src/views/vehicle/spawn/view_persist_car.cpp +++ b/src/views/vehicle/spawn/view_persist_car.cpp @@ -47,6 +47,32 @@ namespace big const auto vehicle_folders = persist_car_service::list_sub_folders(); const auto vehicle_files = persist_car_service::list_files(g.persist_car.persist_vehicle_sub_folder); + static std::string file_name_to_delete{}; + + if (!file_name_to_delete.empty()) + ImGui::OpenPopup("##deletepersistcar"); + + if (ImGui::BeginPopupModal("##deletepersistcar", nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove)) + { + ImGui::Text("VIEW_SELF_ANIMATIONS_ARE_YOU_SURE_DELETE"_T.data(), file_name_to_delete.c_str()); + + ImGui::Spacing(); + + if (ImGui::Button("YES"_T.data())) + { + persist_car_service::delete_vehicle(file_name_to_delete, g.persist_car.persist_vehicle_sub_folder); + file_name_to_delete.clear(); + ImGui::CloseCurrentPopup(); + } + ImGui::SameLine(); + if (ImGui::Button("NO"_T.data())) + { + file_name_to_delete.clear(); + ImGui::CloseCurrentPopup(); + } + + ImGui::EndPopup(); + } if (ImGui::Checkbox("PREVIEW"_T.data(), &g.persist_car.preview_vehicle)) { @@ -99,7 +125,7 @@ namespace big std::transform(pair_lower.begin(), pair_lower.end(), pair_lower.begin(), tolower); if (pair_lower.contains(lower_search)) { - if (ImGui::Selectable(pair.c_str(), selected_vehicle_file == pair)) + if (ImGui::Selectable(pair.c_str(), selected_vehicle_file == pair, ImGuiSelectableFlags_AllowItemOverlap)) { selected_vehicle_file = pair; g_fiber_pool->queue_job([] { @@ -108,6 +134,12 @@ namespace big }); } + ImGui::SameLine(); + if (ImGui::SmallButton("X")) + { + file_name_to_delete = pair; + } + if (!g.persist_car.preview_vehicle || (g.persist_car.preview_vehicle && !ImGui::IsAnyItemHovered())) { g_model_preview_service->stop_preview();