Fix RadioButtonsOptions builder parameter type.

Add race lockout to new and apply buttons.
This commit is contained in:
Malkierian 2025-04-30 19:49:19 -07:00
commit 1cb87c5fb6
2 changed files with 109 additions and 97 deletions

View file

@ -201,14 +201,7 @@ void SavePreset(std::string& presetName) {
static std::string newPresetName; static std::string newPresetName;
static bool saveSection[PRESET_SECTION_MAX]; static bool saveSection[PRESET_SECTION_MAX];
void PresetsCustomWidget(WidgetInfo& info) { void DrawNewPresetPopup() {
ImGui::PushFont(OTRGlobals::Instance->fontMonoLargest);
if (UIWidgets::Button("New Preset", UIWidgets::ButtonOptions().Size(UIWidgets::Sizes::Inline).Color(THEME_COLOR))) {
ImGui::OpenPopup("newPreset");
}
if (ImGui::BeginPopup("newPreset", ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar |
ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoTitleBar)) {
bool nameExists = presets.contains(newPresetName); bool nameExists = presets.contains(newPresetName);
UIWidgets::InputString("Preset Name", &newPresetName, UIWidgets::InputString("Preset Name", &newPresetName,
UIWidgets::InputOptions() UIWidgets::InputOptions()
@ -269,28 +262,28 @@ void PresetsCustomWidget(WidgetInfo& info) {
if (window != nullptr) { if (window != nullptr) {
auto size = window->Size; auto size = window->Size;
auto pos = window->Pos; auto pos = window->Pos;
presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]] presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]]["windows"]
["windows"]["Entrance Tracker"]["size"]["width"] = size.x; ["Entrance Tracker"]["size"]["width"] = size.x;
presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]] presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]]["windows"]
["windows"]["Entrance Tracker"]["size"]["height"] = size.y; ["Entrance Tracker"]["size"]["height"] = size.y;
presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]] presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]]["windows"]
["windows"]["Entrance Tracker"]["pos"]["x"] = pos.x; ["Entrance Tracker"]["pos"]["x"] = pos.x;
presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]] presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]]["windows"]
["windows"]["Entrance Tracker"]["pos"]["y"] = pos.y; ["Entrance Tracker"]["pos"]["y"] = pos.y;
} }
window = ImGui::FindWindowByName("Check Tracker"); window = ImGui::FindWindowByName("Check Tracker");
if (window != nullptr) { if (window != nullptr) {
auto size = window->Size; auto size = window->Size;
auto pos = window->Pos; auto pos = window->Pos;
presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]] presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]]["windows"]
["windows"]["Check Tracker"]["size"]["width"] = size.x; ["Check Tracker"]["size"]["width"] = size.x;
presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]] presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]]["windows"]
["windows"]["Check Tracker"]["size"]["height"] = size.y; ["Check Tracker"]["size"]["height"] = size.y;
presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]] presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]]["windows"]
["windows"]["Check Tracker"]["pos"]["x"] = pos.x; ["Check Tracker"]["pos"]["x"] = pos.x;
presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]] presets[newPresetName].presetValues["blocks"][blockInfo[PRESET_SECTION_TRACKERS].names[1]]["windows"]
["windows"]["Check Tracker"]["pos"]["y"] = pos.y; ["Check Tracker"]["pos"]["y"] = pos.y;
} }
} }
presets[newPresetName].fileName = newPresetName; presets[newPresetName].fileName = newPresetName;
@ -303,6 +296,21 @@ void PresetsCustomWidget(WidgetInfo& info) {
ImGui::CloseCurrentPopup(); ImGui::CloseCurrentPopup();
} }
ImGui::EndPopup(); ImGui::EndPopup();
}
void PresetsCustomWidget(WidgetInfo& info) {
ImGui::PushFont(OTRGlobals::Instance->fontMonoLargest);
if (UIWidgets::Button("New Preset", UIWidgets::ButtonOptions(
{ { .disabled = (CVarGetInteger(CVAR_SETTING("DisableChanges"), 0) != 0),
.disabledTooltip = "Disabled because of race lockout" } })
.Size(UIWidgets::Sizes::Inline)
.Color(THEME_COLOR))) {
ImGui::OpenPopup("newPreset");
}
if (ImGui::BeginPopup("newPreset", ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar |
ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoTitleBar)) {
DrawNewPresetPopup();
} }
UIWidgets::PushStyleTabs(THEME_COLOR); UIWidgets::PushStyleTabs(THEME_COLOR);
if (ImGui::BeginTable("PresetWidgetTable", PRESET_SECTION_MAX + 3)) { if (ImGui::BeginTable("PresetWidgetTable", PRESET_SECTION_MAX + 3)) {
@ -346,7 +354,11 @@ void PresetsCustomWidget(WidgetInfo& info) {
} }
ImGui::TableNextColumn(); ImGui::TableNextColumn();
UIWidgets::PushStyleButton(THEME_COLOR); UIWidgets::PushStyleButton(THEME_COLOR);
if (UIWidgets::Button(("Apply##" + name).c_str(), UIWidgets::ButtonOptions().Padding({ 6.0f, 6.0f }))) { if (UIWidgets::Button(
("Apply##" + name).c_str(),
UIWidgets::ButtonOptions({ { .disabled = (CVarGetInteger(CVAR_SETTING("DisableChanges"), 0) != 0),
.disabledTooltip = "Disabled because of race lockout" } })
.Padding({ 6.0f, 6.0f }))) {
for (int i = PRESET_SECTION_SETTINGS; i < PRESET_SECTION_MAX; i++) { for (int i = PRESET_SECTION_SETTINGS; i < PRESET_SECTION_MAX; i++) {
if (info.apply[i] && info.presetValues["blocks"].contains(blockInfo[i].names[1])) { if (info.apply[i] && info.presetValues["blocks"].contains(blockInfo[i].names[1])) {
if (i == PRESET_SECTION_TRACKERS) { if (i == PRESET_SECTION_TRACKERS) {

View file

@ -414,7 +414,7 @@ struct RadioButtonsOptions : WidgetOptions {
color = color_; color = color_;
return *this; return *this;
} }
RadioButtonsOptions& DefaultIndex(float defaultIndex_) { RadioButtonsOptions& DefaultIndex(int32_t defaultIndex_) {
defaultIndex = defaultIndex_; defaultIndex = defaultIndex_;
return *this; return *this;
} }