Files
MMOKitchen/Menus/PreferenceMenu.cs
T

88 lines
3.7 KiB
C#
Raw Permalink Normal View History

2024-04-01 08:12:01 +11:00
using System.Collections.Generic;
using Kitchen;
using Kitchen.Modules;
using KitchenLib;
using KitchenLib.Preferences;
using UnityEngine;
namespace MMOKitchen.Menus
{
2026-03-08 21:33:59 +11:00
public class PreferenceMenu : KLMenu
2024-04-01 08:12:01 +11:00
{
public PreferenceMenu(Transform container, ModuleList module_list) : base(container, module_list)
{
}
2026-03-05 17:09:17 +11:00
private Option<int> requiredPercentage = new Option<int>(new List<int> { 25, 50, 75, 100 }, Mod.manager.GetPreference<PreferenceInt>(Mod.PREFERENCE_REQUIRED_CONSENT_PERCENTAGE).Get(), new List<string> { "25%", "50%", "75%", "100%" });
2026-03-08 21:33:59 +11:00
//private Option<float> scaleMultiplier = new Option<float>(new List<float> { 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1f }, Mod.manager.GetPreference<PreferenceFloat>("scaleAbove4PlayersMultiplier").Get(), new List<string> { "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1.0" });
2024-04-01 08:12:01 +11:00
private Option<bool> scaleEnabled = new Option<bool>(new List<bool> { true, false }, Mod.manager.GetPreference<PreferenceBool>("scaleAbove4Players").Get(), new List<string> { "Enabled", "Disabled" });
2026-03-08 21:33:59 +11:00
private Option<float> customerScaleAmount;
private Option<float> fireScaleAmount;
private Option<float> patienceScaleAmount;
2024-04-01 08:12:01 +11:00
public override void Setup(int player_id)
{
New<SpacerElement>(true);
AddLabel("Required Consent Percentage");
AddSelect<int>(requiredPercentage);
requiredPercentage.OnChanged += delegate (object _, int result)
{
2026-03-05 17:09:17 +11:00
Mod.manager.GetPreference<PreferenceInt>(Mod.PREFERENCE_REQUIRED_CONSENT_PERCENTAGE).Set(result);
2024-08-10 05:09:06 +10:00
Mod.manager.Save();
2024-04-01 08:12:01 +11:00
};
New<SpacerElement>(true);
AddLabel("Scale Above 4 Players");
AddSelect<bool>(scaleEnabled);
scaleEnabled.OnChanged += delegate (object _, bool result)
{
Mod.manager.GetPreference<PreferenceBool>("scaleAbove4Players").Set(result);
2024-08-10 05:09:06 +10:00
Mod.manager.Save();
2024-04-01 08:12:01 +11:00
};
2026-03-08 21:33:59 +11:00
AddScaleOption("Customer Scale Amount", ref customerScaleAmount, Mod.PREFERENCE_CUSTOMER_SCALE_AMOUNT);
AddScaleOption("Fire Scale Amount", ref fireScaleAmount, Mod.PREFERENCE_FIRE_SCALE_AMOUNT);
AddScaleOption("Patience Scale Amount", ref patienceScaleAmount, Mod.PREFERENCE_PATIENCE_SCALE_AMOUNT);
2024-04-01 08:12:01 +11:00
2026-03-08 21:33:59 +11:00
New<SpacerElement>();
New<SpacerElement>();
2024-04-01 08:12:01 +11:00
AddButton(base.Localisation["MENU_BACK_SETTINGS"], delegate (int i)
{
this.RequestPreviousMenu();
}, 0, 1f, 0.2f);
}
2026-03-08 21:33:59 +11:00
private void AddScaleOption(string label, ref Option<float> option, string preferenceKey, float min = 0f, float max = 2f, float step = 0.1f)
{
if (option == null)
{
List<float> values = new List<float>();
List<string> displayValues = new List<string>();
for (float f = min; f < max + step; f += step)
{
values.Add((float)System.Math.Round(f, 2));
displayValues.Add(((float)System.Math.Round(f, 2)).ToString("0.00"));
}
option = new Option<float>(values, Mod.manager.GetPreference<PreferenceFloat>(preferenceKey).Value, displayValues);
}
New<SpacerElement>();
AddLabel(label);
AddSelect(option);
option.OnChanged += (_, result) =>
{
Mod.manager.GetPreference<PreferenceFloat>(preferenceKey).Set(result);
Mod.manager.Save();
};
}
2024-04-01 08:12:01 +11:00
}
}