From 136402dd2686e555ab64c19c7a5d3a5d773866bc Mon Sep 17 00:00:00 2001 From: Lachlan Leone Date: Sun, 8 Mar 2026 21:33:59 +1100 Subject: [PATCH] Code Cleanup & Formula Adjustments --- Changelogs/Github/v0.4.0.MD | 6 ++++ Changelogs/Workshop/v0.4.0.MD | 6 ++++ Menus/PreferenceMenu.cs | 53 ++++++++++++++++++++++++------- Mod.cs | 36 +++++++++++---------- Patches/DifficultyHelpersPatch.cs | 45 +++++++++++++++----------- 5 files changed, 98 insertions(+), 48 deletions(-) create mode 100644 Changelogs/Github/v0.4.0.MD create mode 100644 Changelogs/Workshop/v0.4.0.MD diff --git a/Changelogs/Github/v0.4.0.MD b/Changelogs/Github/v0.4.0.MD new file mode 100644 index 0000000..7a12168 --- /dev/null +++ b/Changelogs/Github/v0.4.0.MD @@ -0,0 +1,6 @@ +# Release Notes v0.4.0 + +- Updated difficulty formulas to be closer to the vanilla game. +- Split difficulty options into separate categories for better control. +- Fixed a bug causing the logs to be spammed with debug messages. +- General code cleanup. \ No newline at end of file diff --git a/Changelogs/Workshop/v0.4.0.MD b/Changelogs/Workshop/v0.4.0.MD new file mode 100644 index 0000000..fda4efc --- /dev/null +++ b/Changelogs/Workshop/v0.4.0.MD @@ -0,0 +1,6 @@ +[h1]Release Notes v0.4.0[/h1] + +- Updated difficulty formulas to be closer to the vanilla game. +- Split difficulty options into separate categories for better control. +- Fixed a bug causing the logs to be spammed with debug messages. +- General code cleanup. \ No newline at end of file diff --git a/Menus/PreferenceMenu.cs b/Menus/PreferenceMenu.cs index f0f130f..ff1c55b 100644 --- a/Menus/PreferenceMenu.cs +++ b/Menus/PreferenceMenu.cs @@ -7,15 +7,20 @@ using UnityEngine; namespace MMOKitchen.Menus { - public class PreferenceMenu : KLMenu + 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 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) { @@ -37,22 +42,46 @@ namespace MMOKitchen.Menus 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); - AddLabel("Scale Multiplier"); - AddSelect(scaleMultiplier); - scaleMultiplier.OnChanged += delegate (object _, float result) - { - Mod.manager.GetPreference("scaleAbove4PlayersMultiplier").Set(result); - Mod.manager.Save(); - }; - - New(true); - New(true); + 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(); + }; + } } } diff --git a/Mod.cs b/Mod.cs index 7c8664b..04ab24c 100644 --- a/Mod.cs +++ b/Mod.cs @@ -2,9 +2,10 @@ using KitchenLib; using KitchenMods; using System.Reflection; using Kitchen; -using KitchenLib.Event; using KitchenLib.Preferences; +using KitchenLib.UI.PlateUp.PreferenceMenus; using MMOKitchen.Menus; +using UnityEngine; using KitchenLogger = KitchenLib.Logging.KitchenLogger; namespace MMOKitchen @@ -13,13 +14,16 @@ namespace MMOKitchen { public const string MOD_GUID = "com.starfluxgames.mmokitchen"; public const string MOD_NAME = "MMO Kitchen"; - public const string MOD_VERSION = "0.3.3"; + public const string MOD_VERSION = "0.4.0"; public const string MOD_AUTHOR = "StarFluxGames"; public const string MOD_GAMEVERSION = ">=1.2.0"; public const string PREFERENCE_REQUIRED_CONSENT_PERCENTAGE = "requiredConsentPercentage"; public const string PREFERENCE_SCALE_ABOVE_4_PLAYERS = "scaleAbove4Players"; - public const string PREFERENCE_SCALE_ABOVE_4_PLAYERS_MULTIPLIER = "scaleAbove4PlayersMultiplier"; + + public const string PREFERENCE_CUSTOMER_SCALE_AMOUNT = "PREFERENCE_CUSTOMER_SCALE_AMOUNT"; + public const string PREFERENCE_FIRE_SCALE_AMOUNT = "PREFERENCE_FIRE_SCALE_AMOUNT"; + public const string PREFERENCE_PATIENCE_SCALE_AMOUNT = "PREFERENCE_PATIENCE_SCALE_AMOUNT"; public static KitchenLogger Logger; public static PreferenceManager manager; @@ -40,22 +44,20 @@ namespace MMOKitchen protected override void OnPostActivate(KitchenMods.Mod mod) { Logger = InitLogger(); - manager = new PreferenceManager("mmokitchen"); // Keeping the old GUID so we don't have to reset the preferences + manager = new PreferenceManager("mmokitchen"); manager.RegisterPreference(new PreferenceInt(PREFERENCE_REQUIRED_CONSENT_PERCENTAGE, 100)); - manager.RegisterPreference(new PreferenceBool("scaleAbove4Players", false)); - manager.RegisterPreference(new PreferenceFloat("scaleAbove4PlayersMultiplier", 0.235f)); - manager.Load(); + manager.RegisterPreference(new PreferenceBool(PREFERENCE_SCALE_ABOVE_4_PLAYERS, true)); - ModsPreferencesMenu.RegisterMenu("MMO Kitchen", typeof(PreferenceMenu), typeof(MenuAction)); - ModsPreferencesMenu.RegisterMenu("MMO Kitchen", typeof(PreferenceMenu), typeof(MenuAction)); - Events.MainMenuView_SetupMenusEvent += (s, args) => - { - args.addMenu.Invoke(args.instance, new object[] { typeof(PreferenceMenu), new PreferenceMenu(args.instance.ButtonContainer, args.module_list) }); - }; - Events.PlayerPauseView_SetupMenusEvent += (s, args) => - { - args.addMenu.Invoke(args.instance, new object[] { typeof(PreferenceMenu), new PreferenceMenu(args.instance.ButtonContainer, args.module_list) }); - }; + manager.RegisterPreference(new PreferenceFloat(PREFERENCE_CUSTOMER_SCALE_AMOUNT, 1f)); + manager.RegisterPreference(new PreferenceFloat(PREFERENCE_FIRE_SCALE_AMOUNT, 1f)); + manager.RegisterPreference(new PreferenceFloat(PREFERENCE_PATIENCE_SCALE_AMOUNT, 1f)); + + manager.Load(); + manager.Save(); + + MainMenuPreferencesesMenu.RegisterMenu(MOD_NAME, typeof(PreferenceMenu)); + PauseMenuPreferencesesMenu.RegisterMenu(MOD_NAME, typeof(PreferenceMenu)); + BasePreferencesMenu.RegisterUsableMenu(typeof(PreferenceMenu)); } } } diff --git a/Patches/DifficultyHelpersPatch.cs b/Patches/DifficultyHelpersPatch.cs index 517719f..b04ca15 100644 --- a/Patches/DifficultyHelpersPatch.cs +++ b/Patches/DifficultyHelpersPatch.cs @@ -9,35 +9,42 @@ namespace MMOKitchen.Patches { [HarmonyPatch("CustomerPlayersRateModifier")] [HarmonyPrefix] - static bool CustomerPlayersRateModifier_Postfix(ref float __result, int player_count) + static bool CustomerPlayersRateModifier_Prefix(ref float __result, int player_count) { - if (player_count < 4 && Mod.manager.GetPreference("scaleAbove4Players").Value) + if (player_count > 4 && Mod.manager.GetPreference(Mod.PREFERENCE_SCALE_ABOVE_4_PLAYERS).Value) { - __result = (0.55f + (player_count * 0.25f) - 0.05f) * Mod.manager.GetPreference("scaleAbove4PlayersMultiplier").Value; + __result = (float)(1.5 + 0.25 * (player_count - 4) * Mod.manager.GetPreference(Mod.PREFERENCE_CUSTOMER_SCALE_AMOUNT).Value); + return false; + } + + Mod.Logger.LogInfo("5"); + + return true; + } + + [HarmonyPatch("FireSpreadModifier")] + [HarmonyPrefix] + static bool FireSpreadModifier_Prefix(ref float __result, int player_count) + { + if (player_count > 4 && Mod.manager.GetPreference(Mod.PREFERENCE_SCALE_ABOVE_4_PLAYERS).Value) + { + __result = (float)(1.15 + 0.05 * (player_count - 4) * Mod.manager.GetPreference(Mod.PREFERENCE_FIRE_SCALE_AMOUNT).Value); return false; } return true; } - /* - [HarmonyPatch("FireSpreadModifier")] - [HarmonyPostfix] - static void FireSpreadModifier_Postfix(ref float __result, int player_count) - { - if (Mod.manager.GetPreference("scaleAbove4Players").Value) - if (player_count > 4) - __result = 0.75f + (player_count * Mod.manager.GetPreference("scaleAbove4PlayersMultiplier").Value); - } - [HarmonyPatch("PatiencePlayerCountModifier")] - [HarmonyPostfix] - static void PatiencePlayerCountModifier_Postfix(ref float __result, int player_count) + [HarmonyPrefix] + static bool PatiencePlayerCountModifier_Prefix(ref float __result, int player_count) { - if (Mod.manager.GetPreference("scaleAbove4Players").Value) - if (player_count > 4) - __result = 0.75f + (player_count * Mod.manager.GetPreference("scaleAbove4PlayersMultiplier").Value); + if (player_count > 4 && Mod.manager.GetPreference(Mod.PREFERENCE_SCALE_ABOVE_4_PLAYERS).Value) + { + __result = (float)(1.5 + 0.25 * (player_count - 4) * Mod.manager.GetPreference(Mod.PREFERENCE_PATIENCE_SCALE_AMOUNT).Value); + return false; + } + return true; } - */ } }