From cb1f805e690063dbd066c4b283eaea43398d8964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Thu, 18 Apr 2024 00:25:04 +0200 Subject: [PATCH] Add world mine production patch --- .../CaptainOfIndustry/Class1.cs | 2 ++ .../CaptainOfIndustry/Patches.cs | 36 ++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/Projects/CaptainOfIndustry/CaptainOfIndustry/Class1.cs b/Projects/CaptainOfIndustry/CaptainOfIndustry/Class1.cs index 626a720..0ccf5be 100644 --- a/Projects/CaptainOfIndustry/CaptainOfIndustry/Class1.cs +++ b/Projects/CaptainOfIndustry/CaptainOfIndustry/Class1.cs @@ -21,6 +21,7 @@ namespace CaptainOfIndustry { public static ConfigEntry bufferCapacityMultiplier; public static ConfigEntry unityGenerationMultiplier; public static ConfigEntry depotTransferSpeedMultiplier; + public static ConfigEntry worldMineSpeedMultiplier; public void Awake() { excavatorCapacityMultiplier = Config.Bind("General", "Excavator Capacity Multiplier", 1, new ConfigDescription("Excavator Capacity Multiplier")); @@ -31,6 +32,7 @@ namespace CaptainOfIndustry { storageCapacityMultiplier = Config.Bind("General", "Storage Capacity Multiplier", 1f, new ConfigDescription("Storage Capacity Multiplier")); unityGenerationMultiplier = Config.Bind("General", "Unity Generation Multiplier", 1f, new ConfigDescription("Unity Generation Multiplier")); depotTransferSpeedMultiplier = Config.Bind("General", "Depot Transfer Speed Multiplier", 1f, new ConfigDescription("Depot Transfer Speed Multiplier")); + worldMineSpeedMultiplier = Config.Bind("General", "World Mine Speed Multiplier", 1f, new ConfigDescription("World Mine Speed Multiplier")); // shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch(); // energyGenMultiplier.SettingChanged += (sender, args) => GeneratorPropertiesManager.DoPatch(); diff --git a/Projects/CaptainOfIndustry/CaptainOfIndustry/Patches.cs b/Projects/CaptainOfIndustry/CaptainOfIndustry/Patches.cs index 4b3e491..b8d6938 100644 --- a/Projects/CaptainOfIndustry/CaptainOfIndustry/Patches.cs +++ b/Projects/CaptainOfIndustry/CaptainOfIndustry/Patches.cs @@ -5,10 +5,12 @@ using System.Reflection; using System.Reflection.Emit; using HarmonyLib; using Mafi; +using Mafi.Core; using Mafi.Core.Buildings.Cargo; using Mafi.Core.Buildings.Cargo.Modules; using Mafi.Core.Buildings.Cargo.Ships.Modules; using Mafi.Core.Buildings.Storages; +using Mafi.Core.Entities; using Mafi.Core.Entities.Dynamic; using Mafi.Core.Entities.Static; using Mafi.Core.Entities.Static.Layout; @@ -17,6 +19,7 @@ using Mafi.Core.Map; using Mafi.Core.Population; using Mafi.Core.Products; using Mafi.Core.Prototypes; +using Mafi.Core.World.Entities; namespace CaptainOfIndustry { [HarmonyPatch] @@ -231,9 +234,40 @@ namespace CaptainOfIndustry { Traverse traverse = Traverse.Create(__instance); traverse.Field("QuantityPerExchange") - .SetValue(new Quantity((int)(__instance.QuantityPerExchange.Value * Main.depotTransferSpeedMultiplier.Value))); + .SetValue(new Quantity((int)(__instance.QuantityPerExchange.Value * + Main.depotTransferSpeedMultiplier.Value))); // Console.WriteLine("IndustrialCyka: New storage capacity: {0}", __instance.Capacity.Value); } + + [HarmonyPostfix] + [HarmonyPatch(typeof(WorldMapMineProto), MethodType.Constructor, + new[] { + typeof(EntityProto.ID), + typeof(Proto.Str), + typeof(ProductQuantity), + typeof(Duration), + typeof(Upoints), + typeof(UpointsCategoryProto), + typeof(EntityCosts), + typeof(Func), + typeof(int), + typeof(Quantity), + typeof(WorldMapEntityProto.Gfx), + typeof(int), + typeof(int), + typeof(IEnumerable), + })] + static void worldMineSpeedMultiplier(WorldMapMineProto __instance) { + // Console.WriteLine("Before: {0}", __instance.ProducedProductPerStep.Quantity.Value); + ProductQuantity newProductQuantity = new ProductQuantity(__instance.ProducedProductPerStep.Product, + new Quantity((int)(__instance.ProducedProductPerStep.Quantity.Value * + Main.worldMineSpeedMultiplier.Value))); + + Traverse.Create(__instance) + .Field("ProducedProductPerStep") + .SetValue(newProductQuantity); + // Console.WriteLine("After: {0}", __instance.ProducedProductPerStep.Quantity.Value); + } } }