This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
YimMenu/BigBaseV2/src/gui/handling/modals/update_handling.cpp
LiamD-Flop 0bd7c97337
feat(GUI): Simplifying the gui (#118)
Co-authored-by: Maddy <59680197+xM4ddy@users.noreply.github.com>
Co-authored-by: Yimura <andreas.maerten@scarlet.be>
2022-05-04 19:16:40 +02:00

92 lines
2.3 KiB
C++

#include "../current_profile/current_profile_tabs.hpp"
#include "fiber_pool.hpp"
#include "thread_pool.hpp"
#include "natives.hpp"
#include "script.hpp"
#include "services/vehicle_service.hpp"
namespace big
{
void modal_handling::modal_update_handling()
{
ImGui::SetNextWindowSize({ 520, 325 }, ImGuiCond_FirstUseEver);
if (ImGui::BeginPopupModal("Update Handling"))
{
auto share_code = g_vehicle_service->get_active_profile(g_local_player->m_vehicle->m_handling->m_model_hash);
if (share_code.empty())
{
// should be impossible to trigger but still
return ImGui::EndPopup();
}
auto it = g_vehicle_service->m_handling_profiles.find(share_code);
if (it == g_vehicle_service->m_handling_profiles.end())
return ImGui::EndPopup();
auto profile = it->second;
static char name[32], description[256] = "No description.";
strcpy(name, profile.name.c_str());
strcpy(description, profile.description.c_str());
switch (g_vehicle_service->publish_status())
{
case PublishStatus::SAVING:
ImGui::Text("Saving...");
return ImGui::EndPopup();
case PublishStatus::SAVED:
strcpy(name, "");
strcpy(description, "No description.");
g_vehicle_service->publish_status(PublishStatus::IDLE);
g_vehicle_service->update_mine(true);
ImGui::CloseCurrentPopup();
return ImGui::EndPopup();
case PublishStatus::FAILED:
ImGui::TextColored({ 255, 0, 0, 1 }, "Failed to update handling profile.");
ImGui::Separator();
}
QUEUE_JOB_BEGIN_CLAUSE()
{
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
}QUEUE_JOB_END_CLAUSE
ImGui::BeginGroup();
ImGui::Text("Name:");
ImGui::Text("Description:");
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::InputText("##modal_handling_name", name, sizeof(name));
ImGui::InputTextMultiline("##modal_handling_description", description, sizeof(description));
ImGui::EndGroup();
if (ImGui::Button("Cancel"))
{
strcpy(name, "");
strcpy(description, "No description.");
ImGui::CloseCurrentPopup();
}
ImGui::SameLine();
if (ImGui::Button("Update"))
{
g_thread_pool->push([&]
{
g_vehicle_service->publish_profile(name, description, profile.share_code);
});
}
ImGui::EndPopup();
}
}
}