using System.Collections.Generic; using Kitchen; using Kitchen.Modules; using KitchenLib; using KitchenLib.Preferences; using UnityEngine; namespace MMOKitchen.Menus { public class PreferenceMenu : KLMenu { public PreferenceMenu(Transform container, ModuleList module_list) : base(container, module_list) { } private Option requiredPercentage = new Option(new List { 25, 50, 75, 100 }, Mod.manager.GetPreference(Mod.PREFERENCE_REQUIRED_CONSENT_PERCENTAGE).Get(), new List { "25%", "50%", "75%", "100%" }); //private Option scaleMultiplier = new Option(new List { 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1f }, Mod.manager.GetPreference("scaleAbove4PlayersMultiplier").Get(), new List { "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1.0" }); private Option scaleEnabled = new Option(new List { true, false }, Mod.manager.GetPreference("scaleAbove4Players").Get(), new List { "Enabled", "Disabled" }); private Option customerScaleAmount; private Option fireScaleAmount; private Option patienceScaleAmount; public override void Setup(int player_id) { New(true); AddLabel("Required Consent Percentage"); AddSelect(requiredPercentage); requiredPercentage.OnChanged += delegate (object _, int result) { Mod.manager.GetPreference(Mod.PREFERENCE_REQUIRED_CONSENT_PERCENTAGE).Set(result); Mod.manager.Save(); }; New(true); AddLabel("Scale Above 4 Players"); AddSelect(scaleEnabled); scaleEnabled.OnChanged += delegate (object _, bool result) { Mod.manager.GetPreference("scaleAbove4Players").Set(result); Mod.manager.Save(); }; 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); New(); New(); AddButton(base.Localisation["MENU_BACK_SETTINGS"], delegate (int i) { this.RequestPreviousMenu(); }, 0, 1f, 0.2f); } private void AddScaleOption(string label, ref Option option, string preferenceKey, float min = 0f, float max = 2f, float step = 0.1f) { if (option == null) { List values = new List(); List displayValues = new List(); 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(values, Mod.manager.GetPreference(preferenceKey).Value, displayValues); } New(); AddLabel(label); AddSelect(option); option.OnChanged += (_, result) => { Mod.manager.GetPreference(preferenceKey).Set(result); Mod.manager.Save(); }; } } }