From 4ea694ea6eeaebd837caf7370aa57ade6423ba81 Mon Sep 17 00:00:00 2001 From: William JCM Date: Fri, 25 Nov 2022 17:10:56 +0100 Subject: [PATCH] SaveTool: add advanced mode. This'll help hide undocumented values. --- src/SaveTool/SaveTool.cpp | 1 + src/SaveTool/SaveTool.h | 1 + src/SaveTool/SaveTool_Initialisation.cpp | 7 ++ src/SaveTool/SaveTool_MassViewer.cpp | 136 ++++++++++++----------- src/SaveTool/SaveTool_drawMainMenu.cpp | 6 + 5 files changed, 89 insertions(+), 62 deletions(-) diff --git a/src/SaveTool/SaveTool.cpp b/src/SaveTool/SaveTool.cpp index 3e24cc4..23e61bb 100644 --- a/src/SaveTool/SaveTool.cpp +++ b/src/SaveTool/SaveTool.cpp @@ -167,6 +167,7 @@ SaveTool::~SaveTool() { LOG_INFO("Saving the configuration."); _conf.setValue("cheat_mode"_s, _cheatMode); + _conf.setValue("advanced_mode"_s, _advancedMode); _conf.setValue("startup_update_check"_s, _checkUpdatesOnStartup); _conf.setValue("skip_disclaimer"_s, _skipDisclaimer); diff --git a/src/SaveTool/SaveTool.h b/src/SaveTool/SaveTool.h index 0ddb586..19b1070 100644 --- a/src/SaveTool/SaveTool.h +++ b/src/SaveTool/SaveTool.h @@ -291,4 +291,5 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener bool _eLaunchersDirty{false}; bool _cheatMode{false}; + bool _advancedMode{false}; }; diff --git a/src/SaveTool/SaveTool_Initialisation.cpp b/src/SaveTool/SaveTool_Initialisation.cpp index e5021e9..f0bafcc 100644 --- a/src/SaveTool/SaveTool_Initialisation.cpp +++ b/src/SaveTool/SaveTool_Initialisation.cpp @@ -58,6 +58,13 @@ void SaveTool::initialiseConfiguration() { _conf.setValue("cheat_mode"_s, _cheatMode); } + if(_conf.hasValue("advanced_mode"_s)) { + _advancedMode = _conf.value("advanced_mode"_s); + } + else { + _conf.setValue("advanced_mode"_s, _advancedMode); + } + if(_conf.hasValue("startup_update_check"_s)) { _checkUpdatesOnStartup = _conf.value("startup_update_check"_s); } diff --git a/src/SaveTool/SaveTool_MassViewer.cpp b/src/SaveTool/SaveTool_MassViewer.cpp index 5b42a96..8aa5c77 100644 --- a/src/SaveTool/SaveTool_MassViewer.cpp +++ b/src/SaveTool/SaveTool_MassViewer.cpp @@ -394,9 +394,12 @@ auto SaveTool::drawCustomStyle(CustomStyle& style) -> DCSResult { void SaveTool::drawDecalEditor(Decal& decal) { ImGui::Text("ID: %i", decal.id); - if(ImGui::BeginTable("##DecalTable", 2, ImGuiTableFlags_BordersInnerV)) { + if(ImGui::BeginTable("##DecalTable", _advancedMode ? 2 : 1, ImGuiTableFlags_BordersInnerV)) { ImGui::TableSetupColumn("##Normal", ImGuiTableColumnFlags_WidthStretch); - ImGui::TableSetupColumn("##Advanced", ImGuiTableColumnFlags_WidthStretch); + + if(_advancedMode) { + ImGui::TableSetupColumn("##Advanced", ImGuiTableColumnFlags_WidthStretch); + } ImGui::TableNextRow(); @@ -440,52 +443,53 @@ void SaveTool::drawDecalEditor(Decal& decal) { ImGui::Checkbox("##Wrap", &decal.wrap); ImGui::EndGroup(); + if(_advancedMode) { + ImGui::TableNextColumn(); - ImGui::TableNextColumn(); + ImGui::TextColored(ImColor(255, 255, 0), ICON_FA_EXCLAMATION_TRIANGLE); + ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); + ImGui::TextUnformatted("Advanced settings. Touch these at your own risk."); - ImGui::TextColored(ImColor(255, 255, 0), ICON_FA_EXCLAMATION_TRIANGLE); - ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); - ImGui::TextUnformatted("Advanced settings. Touch these at your own risk."); + ImGui::BeginGroup(); + drawAlignedText("Position:"); + drawAlignedText("U axis:"); + drawAlignedText("V axis:"); + ImGui::EndGroup(); - ImGui::BeginGroup(); - drawAlignedText("Position:"); - drawAlignedText("U axis:"); - drawAlignedText("V axis:"); - ImGui::EndGroup(); + ImGui::SameLine(); - ImGui::SameLine(); + ImGui::BeginGroup(); + ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth()); + ImGui::DragFloat("##PosX", &decal.position.x(), 1.0f, -FLT_MAX, +FLT_MAX, "X: %.3f"); + ImGui::PopItemWidth(); + ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); + ImGui::DragFloat("##PosY", &decal.position.y(), 1.0f, -FLT_MAX, +FLT_MAX, "Y: %.3f"); + ImGui::PopItemWidth(); + ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); + ImGui::DragFloat("##PosZ", &decal.position.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f"); + ImGui::PopItemWidth(); - ImGui::BeginGroup(); - ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth()); - ImGui::DragFloat("##PosX", &decal.position.x(), 1.0f, -FLT_MAX, +FLT_MAX, "X: %.3f"); - ImGui::PopItemWidth(); - ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); - ImGui::DragFloat("##PosY", &decal.position.y(), 1.0f, -FLT_MAX, +FLT_MAX, "Y: %.3f"); - ImGui::PopItemWidth(); - ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); - ImGui::DragFloat("##PosZ", &decal.position.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f"); - ImGui::PopItemWidth(); + ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth()); + ImGui::DragFloat("##UX", &decal.uAxis.x(), 1.0f, -FLT_MAX, +FLT_MAX, "X: %.3f"); + ImGui::PopItemWidth(); + ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); + ImGui::DragFloat("##UY", &decal.uAxis.y(), 1.0f, -FLT_MAX, +FLT_MAX, "Y: %.3f"); + ImGui::PopItemWidth(); + ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); + ImGui::DragFloat("##UZ", &decal.uAxis.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f"); + ImGui::PopItemWidth(); - ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth()); - ImGui::DragFloat("##UX", &decal.uAxis.x(), 1.0f, -FLT_MAX, +FLT_MAX, "X: %.3f"); - ImGui::PopItemWidth(); - ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); - ImGui::DragFloat("##UY", &decal.uAxis.y(), 1.0f, -FLT_MAX, +FLT_MAX, "Y: %.3f"); - ImGui::PopItemWidth(); - ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); - ImGui::DragFloat("##UZ", &decal.uAxis.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f"); - ImGui::PopItemWidth(); - - ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth()); - ImGui::DragFloat("##VX", &decal.vAxis.x(), 1.0f, -FLT_MAX, +FLT_MAX, "X: %.3f"); - ImGui::PopItemWidth(); - ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); - ImGui::DragFloat("##VY", &decal.vAxis.y(), 1.0f, -FLT_MAX, +FLT_MAX, "Y: %.3f"); - ImGui::PopItemWidth(); - ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); - ImGui::DragFloat("##VZ", &decal.vAxis.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f"); - ImGui::PopItemWidth(); - ImGui::EndGroup(); + ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth()); + ImGui::DragFloat("##VX", &decal.vAxis.x(), 1.0f, -FLT_MAX, +FLT_MAX, "X: %.3f"); + ImGui::PopItemWidth(); + ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); + ImGui::DragFloat("##VY", &decal.vAxis.y(), 1.0f, -FLT_MAX, +FLT_MAX, "Y: %.3f"); + ImGui::PopItemWidth(); + ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x); + ImGui::DragFloat("##VZ", &decal.vAxis.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f"); + ImGui::PopItemWidth(); + ImGui::EndGroup(); + } ImGui::EndTable(); } @@ -632,9 +636,13 @@ void SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView