From c6a875eb5c499a4731d598587869437e9719813a Mon Sep 17 00:00:00 2001 From: GaryOderNichts <12049776+GaryOderNichts@users.noreply.github.com> Date: Wed, 28 Sep 2022 01:30:50 +0200 Subject: [PATCH] Change precision of float sliders (#1609) * Change precision of float sliders * Formatting * Don't round non-percentage sliders --- soh/soh/UIWidgets.cpp | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/soh/soh/UIWidgets.cpp b/soh/soh/UIWidgets.cpp index 9f83c7dc7..9592a3cac 100644 --- a/soh/soh/UIWidgets.cpp +++ b/soh/soh/UIWidgets.cpp @@ -301,10 +301,11 @@ namespace UIWidgets { void EnhancementSliderFloat(const char* text, const char* id, const char* cvarName, float min, float max, const char* format, float defaultValue, bool isPercentage, bool PlusMinusButton) { float val = CVar_GetFloat(cvarName, defaultValue); - if (!isPercentage) + if (!isPercentage) { ImGui::Text(text, val); - else + } else { ImGui::Text(text, static_cast(100 * val)); + } Spacer(0); @@ -312,10 +313,11 @@ namespace UIWidgets { std::string MinusBTNName = " - ##"; MinusBTNName += cvarName; if (ImGui::Button(MinusBTNName.c_str())) { - if (!isPercentage) + if (!isPercentage) { val -= 0.1f; - else + } else { val -= 0.01f; + } CVar_SetFloat(cvarName, val); SohImGui::RequestCvarSaveOnNextTick(); } @@ -331,9 +333,12 @@ namespace UIWidgets { ImGui::PushItemWidth(ImGui::GetWindowSize().x - 79.0f); #endif } - if (ImGui::SliderFloat(id, &val, min, max, format)) - { - CVar_SetFloat(cvarName, val); + if (ImGui::SliderFloat(id, &val, min, max, format)) { + if (isPercentage) { + CVar_SetFloat(cvarName, roundf(val * 100) / 100); + } else { + CVar_SetFloat(cvarName, val); + } SohImGui::RequestCvarSaveOnNextTick(); } if (PlusMinusButton) { @@ -345,24 +350,23 @@ namespace UIWidgets { ImGui::SameLine(); ImGui::SetCursorPosX(ImGui::GetCursorPosX() - 7.0f); if (ImGui::Button(PlusBTNName.c_str())) { - if (!isPercentage) + if (!isPercentage) { val += 0.1f; - else + } else { val += 0.01f; + } CVar_SetFloat(cvarName, val); SohImGui::RequestCvarSaveOnNextTick(); } } - if (val < min) - { + if (val < min) { val = min; CVar_SetFloat(cvarName, val); SohImGui::RequestCvarSaveOnNextTick(); } - if (val > max) - { + if (val > max) { val = max; CVar_SetFloat(cvarName, val); SohImGui::RequestCvarSaveOnNextTick();