From 8c8b9ad591f93d6d4c0d6eb70d5848226691f416 Mon Sep 17 00:00:00 2001 From: balloondude2 <55861555+balloondude2@users.noreply.github.com> Date: Thu, 21 Nov 2024 21:09:01 -0700 Subject: [PATCH] Update the labels of flag checkboxes to hex values (#869) * label weekeventreg by hex mask instead of index * update other flagArrays * consistency * display hex and dec * capitals * oops * oops 2 --- mm/2s2h/BenGui/UIWidgets.cpp | 30 ++++++++++++++++++++++++--- mm/2s2h/BenGui/UIWidgets.hpp | 1 + mm/2s2h/DeveloperTools/SaveEditor.cpp | 2 +- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/mm/2s2h/BenGui/UIWidgets.cpp b/mm/2s2h/BenGui/UIWidgets.cpp index 03063aa145..dbd6804b4e 100644 --- a/mm/2s2h/BenGui/UIWidgets.cpp +++ b/mm/2s2h/BenGui/UIWidgets.cpp @@ -7,6 +7,7 @@ #include #include #include "2s2h/ShipUtils.h" +#include namespace UIWidgets { // Automatically adds newlines to break up text longer than a specified number of characters @@ -534,7 +535,7 @@ void DrawFlagArray32(const std::string& name, uint32_t& flags) { ImGui::PushID(flagIndex); uint32_t bitMask = 1 << flagIndex; bool flag = (flags & bitMask) != 0; - std::string label = std::to_string(flagIndex); + std::string label = fmt::format("0x{:02X} ({})", flagIndex, flagIndex); if (UIWidgets::Checkbox(label.c_str(), &flag, { .tooltip = label.c_str(), .labelPosition = LabelPosition::None })) { if (flag) { @@ -557,7 +558,7 @@ void DrawFlagArray16(const std::string& name, uint16_t& flags) { ImGui::PushID(flagIndex); uint16_t bitMask = 1 << flagIndex; bool flag = (flags & bitMask) != 0; - std::string label = std::to_string(flagIndex); + std::string label = fmt::format("0x{:02X} ({})", flagIndex, flagIndex); if (UIWidgets::Checkbox(label.c_str(), &flag, { .tooltip = label.c_str(), .labelPosition = LabelPosition::None })) { if (flag) { @@ -580,7 +581,30 @@ void DrawFlagArray8(const std::string& name, uint8_t& flags) { ImGui::PushID(flagIndex); uint8_t bitMask = 1 << flagIndex; bool flag = (flags & bitMask) != 0; - std::string label = std::to_string(flagIndex); + std::string label = fmt::format("0x{:02X} ({})", flagIndex, flagIndex); + if (UIWidgets::Checkbox(label.c_str(), &flag, + { .tooltip = label.c_str(), .labelPosition = LabelPosition::None })) { + if (flag) { + flags |= bitMask; + } else { + flags &= ~bitMask; + } + } + ImGui::PopID(); + } + ImGui::PopID(); +} + +void DrawFlagArray8Mask(const std::string& name, uint8_t& flags) { + ImGui::PushID(name.c_str()); + for (int8_t flagIndex = 0; flagIndex < 8; flagIndex++) { + if ((flagIndex % 8) != 0) { + ImGui::SameLine(); + } + ImGui::PushID(flagIndex); + uint8_t bitMask = 1 << flagIndex; + bool flag = (flags & bitMask) != 0; + std::string label = fmt::format("0x{:02X} ({})", bitMask, flagIndex); if (UIWidgets::Checkbox(label.c_str(), &flag, { .tooltip = label.c_str(), .labelPosition = LabelPosition::None })) { if (flag) { diff --git a/mm/2s2h/BenGui/UIWidgets.hpp b/mm/2s2h/BenGui/UIWidgets.hpp index 875bbecef8..42687c06e7 100644 --- a/mm/2s2h/BenGui/UIWidgets.hpp +++ b/mm/2s2h/BenGui/UIWidgets.hpp @@ -417,6 +417,7 @@ namespace UIWidgets { void DrawFlagArray32(const std::string& name, uint32_t& flags); void DrawFlagArray16(const std::string& name, uint16_t& flags); void DrawFlagArray8(const std::string& name, uint8_t& flags); + void DrawFlagArray8Mask(const std::string& name, uint8_t& flags); } #endif /* UIWidgets_hpp */ diff --git a/mm/2s2h/DeveloperTools/SaveEditor.cpp b/mm/2s2h/DeveloperTools/SaveEditor.cpp index acd9aa9a70..dcef87ac5f 100644 --- a/mm/2s2h/DeveloperTools/SaveEditor.cpp +++ b/mm/2s2h/DeveloperTools/SaveEditor.cpp @@ -1722,7 +1722,7 @@ void DrawFlagsTab() { ImGui::PushID(i); ImGui::Text("%02d", i); ImGui::SameLine(); - UIWidgets::DrawFlagArray8("##", gSaveContext.save.saveInfo.weekEventReg[i]); + UIWidgets::DrawFlagArray8Mask("##", gSaveContext.save.saveInfo.weekEventReg[i]); ImGui::PopID(); } break;