From a95bf892abdcfdaa7964be126caa0041e2cc6708 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sat, 19 Oct 2024 22:24:34 +0200 Subject: [PATCH] Implement actual excavator mining area multiplier --- .../CykaOfIndustry/Class1.cs | 9 ++++++-- .../CykaOfIndustry/Patches.cs | 23 +++++++++++++------ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Projects/CaptainOfIndustry/CykaOfIndustry/Class1.cs b/Projects/CaptainOfIndustry/CykaOfIndustry/Class1.cs index 9ec7df2..050b00d 100644 --- a/Projects/CaptainOfIndustry/CykaOfIndustry/Class1.cs +++ b/Projects/CaptainOfIndustry/CykaOfIndustry/Class1.cs @@ -17,7 +17,8 @@ namespace CykaOfIndustry { public static ConfigEntry excavatorMineTileIterationsMultiplier; public static ConfigEntry truckCapacityMultiplier; public static ConfigEntry cargoShipCapacityMultiplier; - public static ConfigEntry excavatorMiningAreaMultiplier; + public static ConfigEntry excavatorMiningCapacityMultiplier; + public static ConfigEntry excavatorMiningAreaMultiplier; public static ConfigEntry excavatorMinReachMultiplier; public static ConfigEntry excavatorMaxReachMultiplier; public static ConfigEntry bufferCapacityMultiplier; @@ -29,6 +30,7 @@ namespace CykaOfIndustry { public static ConfigEntry transportSpeedMultiplier; public static ConfigEntry shipyardCargoMultiplier; public static ConfigEntry autosaveInterval; + public static ConfigEntry debugMode; public void Awake() { @@ -41,8 +43,10 @@ namespace CykaOfIndustry { new ConfigDescription("Truck Capacity Multiplier")); cargoShipCapacityMultiplier = Config.Bind("General", "Cargo Ship Capacity Multiplier", 1, new ConfigDescription("Cargo Ship Capacity Multiplier")); - excavatorMiningAreaMultiplier = Config.Bind("General", "Excavator Mining Area Multiplier", 1f, + excavatorMiningAreaMultiplier = Config.Bind("General", "Excavator Mining Area Multiplier", 1, new ConfigDescription("Excavator Mining Area Multiplier")); + excavatorMiningCapacityMultiplier = Config.Bind("General", "Excavator Mining Capacity Multiplier", 1f, + new ConfigDescription("Excavator Mining Capacity Multiplier")); excavatorMinReachMultiplier = Config.Bind("General", "Excavator Min Reach Multiplier", 1f, new ConfigDescription("Excavator Min Reach Multiplier")); excavatorMaxReachMultiplier = Config.Bind("General", "Excavator Max Reach Multiplier", 1f, @@ -67,6 +71,7 @@ namespace CykaOfIndustry { new ConfigDescription("Shipyard Cargo Multiplier")); autosaveInterval = Config.Bind("General", "Autosave Interval", 1, new ConfigDescription("Autosave Interval in minutes")); + debugMode = Config.Bind("General", "Debug Mode", false, new ConfigDescription("Debug Mode")); // shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch(); diff --git a/Projects/CaptainOfIndustry/CykaOfIndustry/Patches.cs b/Projects/CaptainOfIndustry/CykaOfIndustry/Patches.cs index 55f5a05..40fdc28 100644 --- a/Projects/CaptainOfIndustry/CykaOfIndustry/Patches.cs +++ b/Projects/CaptainOfIndustry/CykaOfIndustry/Patches.cs @@ -45,7 +45,7 @@ namespace CykaOfIndustry { for (int i = 0; i < thicknessMeters.Length; i++) { if (Main.debugMode.Value) Console.WriteLine("IndustrialCyka: Old mining area {0}", thicknessMeters[i]); - thicknessMeters[i] *= Main.excavatorMiningAreaMultiplier.Value; + thicknessMeters[i] *= Main.excavatorMiningCapacityMultiplier.Value; if (Main.debugMode.Value) Console.WriteLine("IndustrialCyka: New mining area {0}", thicknessMeters[i]); } @@ -505,6 +505,7 @@ namespace CykaOfIndustry { Traverse.Create(__instance).Field("CargoCapacity").SetValue(new Quantity( (int)(__instance.CargoCapacity.Value * Main.shipyardCargoMultiplier.Value))); } + [HarmonyPostfix] [HarmonyPatch(typeof(SaveManager), "isTimeForAutoSave")] static void autosaveInterval(ref bool __result, SaveManager __instance) { @@ -524,14 +525,15 @@ namespace CykaOfIndustry { [HarmonyPatch(typeof(Excavator), "MineMixedAt")] public class MineMixedAtPatch { - public static Dictionary originalCapacity = new Dictionary(); + public static Dictionary + originalCapacity = new Dictionary(); public static Dictionary> originalMinedThicknessByDistance = new Dictionary>(); public static Dictionary originalMineTileIterations = new Dictionary(); - + public static Dictionary originalMaxMiningDistance = new Dictionary(); @@ -542,7 +544,8 @@ namespace CykaOfIndustry { var trav = Traverse.Create(__instance.Prototype); trav.Field("Capacity") - .SetValue(new Quantity(originalCapacity[__instance.Prototype].Value * Main.excavatorCapacityMultiplier.Value)); + .SetValue(new Quantity(originalCapacity[__instance.Prototype].Value * + Main.excavatorCapacityMultiplier.Value)); if (Main.debugMode.Value) Console.WriteLine("IndustrialCyka: Excavator capacity: {0}", __instance.Prototype.Capacity.Value); @@ -552,16 +555,22 @@ namespace CykaOfIndustry { } trav.Field("MinedThicknessByDistance") - .SetValue(originalMinedThicknessByDistance[__instance.Prototype].Select(t => - new ThicknessTilesF((int)(t.Value.ToFloat() * Main.excavatorMiningAreaMultiplier.Value))) + .SetValue(originalMinedThicknessByDistance[__instance.Prototype] + .SelectMany(t => Enumerable.Repeat(t, Main.excavatorMiningAreaMultiplier.Value)) + .Select(t => + new ThicknessTilesF((int)(t.Value.ToFloat() * Main.excavatorMiningCapacityMultiplier.Value))) .ToImmutableArray()); + if (Main.debugMode.Value) + originalMinedThicknessByDistance[__instance.Prototype].ForEach(t => Console.WriteLine(t.Value)); if (Main.debugMode.Value) Console.WriteLine("IndustrialCyka: Excavator mined thickness: {0}", __instance.Prototype.MinedThicknessByDistance); if (!originalMaxMiningDistance.ContainsKey(__instance.Prototype)) { - originalMaxMiningDistance.Add(__instance.Prototype, trav.Field("MaxMiningDistance").GetValue()); + originalMaxMiningDistance.Add(__instance.Prototype, + trav.Field("MaxMiningDistance").GetValue()); } + var value = originalMaxMiningDistance[__instance.Prototype]; var newValueMiningDistance = new RelTile1i((int)(value.Value * Main.excavatorMaxReachMultiplier.Value)); trav.Field("MaxMiningDistance")