Add debug logs

This commit is contained in:
2024-10-19 14:33:11 +02:00
parent c7a55276e2
commit d0b0a45f3a

View File

@@ -1,7 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Reflection.Emit; using System.Reflection.Emit;
using HarmonyLib; using HarmonyLib;
using Mafi; using Mafi;
@@ -24,7 +23,6 @@ using Mafi.Core.Products;
using Mafi.Core.Prototypes; using Mafi.Core.Prototypes;
using Mafi.Core.Terrain; using Mafi.Core.Terrain;
using Mafi.Core.Vehicles.Excavators; using Mafi.Core.Vehicles.Excavators;
using Mafi.Core.Vehicles.Jobs;
using Mafi.Core.World.Entities; using Mafi.Core.World.Entities;
namespace CykaOfIndustry { namespace CykaOfIndustry {
@@ -33,36 +31,46 @@ namespace CykaOfIndustry {
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(ExcavatorProtoBuilder.ExcavatorProtoBuilderState), "SetCapacity")] [HarmonyPatch(typeof(ExcavatorProtoBuilder.ExcavatorProtoBuilderState), "SetCapacity")]
static void excavatorCapacityMultiplier(ref int quantity) { static void excavatorCapacityMultiplier(ref int quantity) {
// Console.WriteLine("IndustrialCyka: Old excavator capacity: {0}", quantity); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old excavator capacity {0}", quantity);
quantity *= Main.excavatorCapacityMultiplier.Value; quantity *= Main.excavatorCapacityMultiplier.Value;
// Console.WriteLine("IndustrialCyka: Old excavator capacity: {0}", quantity); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New excavator capacity {0}", quantity);
} }
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(ExcavatorProtoBuilder.ExcavatorProtoBuilderState), "SetMinedThicknessByDistanceMeters")] [HarmonyPatch(typeof(ExcavatorProtoBuilder.ExcavatorProtoBuilderState), "SetMinedThicknessByDistanceMeters")]
static void excavatorMiningAreaMultiplier(ref float[] thicknessMeters) { static void excavatorMiningAreaMultiplier(ref float[] thicknessMeters) {
for (int i = 0; i < thicknessMeters.Length; i++) { for (int i = 0; i < thicknessMeters.Length; i++) {
// Console.WriteLine("IndustrialCyka: Old mining area: {0}", thicknessMeters[i]); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old mining area {0}", thicknessMeters[i]);
thicknessMeters[i] *= Main.excavatorMiningAreaMultiplier.Value; thicknessMeters[i] *= Main.excavatorMiningAreaMultiplier.Value;
// Console.WriteLine("IndustrialCyka: New mining area: {0}", thicknessMeters[i]); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New mining area {0}", thicknessMeters[i]);
} }
} }
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(ExcavatorProtoBuilder.ExcavatorProtoBuilderState), "SetMaxMiningDistance")] [HarmonyPatch(typeof(ExcavatorProtoBuilder.ExcavatorProtoBuilderState), "SetMaxMiningDistance")]
static void excavatorReachMultiplier(ref RelTile1i minMiningDistance, ref RelTile1i maxMiningDistance) { static void excavatorReachMultiplier(ref RelTile1i minMiningDistance, ref RelTile1i maxMiningDistance) {
Console.WriteLine("Min distance: {0}, max distance: {1}", minMiningDistance, maxMiningDistance); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old min mining distance {0}, max mining distance {1}",
minMiningDistance, maxMiningDistance);
minMiningDistance = new RelTile1i((int)(minMiningDistance.Value * Main.excavatorMinReachMultiplier.Value)); minMiningDistance = new RelTile1i((int)(minMiningDistance.Value * Main.excavatorMinReachMultiplier.Value));
maxMiningDistance = new RelTile1i((int)(maxMiningDistance.Value * Main.excavatorMaxReachMultiplier.Value)); maxMiningDistance = new RelTile1i((int)(maxMiningDistance.Value * Main.excavatorMaxReachMultiplier.Value));
Console.WriteLine("Min distance: {0}, max distance: {1}", minMiningDistance, maxMiningDistance); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New min mining distance {0}, max mining distance {1}",
minMiningDistance, maxMiningDistance);
} }
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(TruckProtoBuilder.TruckProtoBuilderState), "SetCapacity")] [HarmonyPatch(typeof(TruckProtoBuilder.TruckProtoBuilderState), "SetCapacity")]
static void truckCapacityMultiplier(ref int quantity) { static void truckCapacityMultiplier(ref int quantity) {
// Console.WriteLine("IndustrialCyka: Old truck capacity: {0}", quantity); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old truck capacity {0}", quantity);
quantity *= Main.truckCapacityMultiplier.Value; quantity *= Main.truckCapacityMultiplier.Value;
// Console.WriteLine("IndustrialCyka: New truck capacity: {0}", quantity); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New truck capacity {0}", quantity);
} }
// [HarmonyPrefix] // [HarmonyPrefix]
@@ -80,9 +88,11 @@ namespace CykaOfIndustry {
typeof(CargoShipModuleProto.Gfx) typeof(CargoShipModuleProto.Gfx)
})] })]
static void cargoShipCapacityMultiplier(CargoShipModuleProto __instance) { static void cargoShipCapacityMultiplier(CargoShipModuleProto __instance) {
// Console.WriteLine("IndustrialCyka: Old ship capacity: {0}", __instance.Capacity.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old ship capacity {0}", __instance.Capacity);
__instance.Capacity = new Quantity(__instance.Capacity.Value * Main.cargoShipCapacityMultiplier.Value); __instance.Capacity = new Quantity(__instance.Capacity.Value * Main.cargoShipCapacityMultiplier.Value);
// Console.WriteLine("IndustrialCyka: New ship capacity: {0}", __instance.Capacity.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New ship capacity {0}", __instance.Capacity);
} }
// No workey... idk how it's supposed to work, speed is always 1 or 100% // No workey... idk how it's supposed to work, speed is always 1 or 100%
@@ -133,8 +143,10 @@ namespace CykaOfIndustry {
typeof(IEnumerable<Tag>) typeof(IEnumerable<Tag>)
})] })]
static void storageCapacityMultiplier(StorageProto __instance) { static void storageCapacityMultiplier(StorageProto __instance) {
// Console.WriteLine("IndustrialCyka: Old storage capacity: {0}", __instance.Capacity.Value); if (Main.debugMode.Value)
// Console.WriteLine("IndustrialCyka: Old storage transfer limit: {0}", __instance.TransferLimit.Value); Console.WriteLine("IndustrialCyka: Old storage capacity {0}", __instance.Capacity);
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old storage transfer limit {0}", __instance.TransferLimit);
Traverse traverse = Traverse.Create(__instance); Traverse traverse = Traverse.Create(__instance);
traverse.Field("Capacity") traverse.Field("Capacity")
@@ -142,17 +154,21 @@ namespace CykaOfIndustry {
traverse.Field("TransferLimit").SetValue(new Quantity(10000)); traverse.Field("TransferLimit").SetValue(new Quantity(10000));
traverse.Field("TransferLimitDuration").SetValue(Duration.FromTicks(1)); traverse.Field("TransferLimitDuration").SetValue(Duration.FromTicks(1));
// Console.WriteLine("IndustrialCyka: New storage capacity: {0}", __instance.Capacity.Value); if (Main.debugMode.Value)
// Console.WriteLine("IndustrialCyka: New storage transfer limit: {0}", __instance.TransferLimit.Value); Console.WriteLine("IndustrialCyka: New storage capacity {0}", __instance.Capacity);
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New storage transfer limit {0}", __instance.TransferLimit);
} }
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(UpointsManager), "GenerateUnity")] [HarmonyPatch(typeof(UpointsManager), "GenerateUnity")]
static void unityGenerationMultiplier(Proto.ID categoryId, ref Upoints generated) { static void unityGenerationMultiplier(Proto.ID categoryId, ref Upoints generated) {
// Console.WriteLine("IndustrialCyka: Old generated {0} unity", generated.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old generated {0} unity", generated.Value);
Fix32 multi = Fix32.FromFloat(Main.unityGenerationMultiplier.Value); Fix32 multi = Fix32.FromFloat(Main.unityGenerationMultiplier.Value);
generated = new Upoints(generated.Value * multi); generated = new Upoints(generated.Value * multi);
// Console.WriteLine("IndustrialCyka: New generated {0} unity", generated.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New generated {0} unity", generated.Value);
} }
[HarmonyTranspiler] [HarmonyTranspiler]
@@ -206,8 +222,12 @@ namespace CykaOfIndustry {
return; return;
} }
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old buffer capacity {0}", newCapacity);
Quantity newNewCapacity = new Quantity((int)(newCapacity.Value * Main.bufferCapacityMultiplier.Value)); Quantity newNewCapacity = new Quantity((int)(newCapacity.Value * Main.bufferCapacityMultiplier.Value));
newCapacity = newNewCapacity; newCapacity = newNewCapacity;
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New buffer capacity {0}", newCapacity);
} }
[HarmonyPostfix] [HarmonyPostfix]
@@ -229,14 +249,16 @@ namespace CykaOfIndustry {
typeof(IEnumerable<Tag>), typeof(IEnumerable<Tag>),
})] })]
static void depotTransferSpeedMultiplier(CargoDepotModuleProto __instance) { static void depotTransferSpeedMultiplier(CargoDepotModuleProto __instance) {
// Console.WriteLine("IndustrialCyka: Old storage capacity: {0}", __instance.Capacity.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old depot transfer speed {0}", __instance.QuantityPerExchange);
Traverse traverse = Traverse.Create(__instance); Traverse traverse = Traverse.Create(__instance);
traverse.Field("QuantityPerExchange") traverse.Field("QuantityPerExchange")
.SetValue(new Quantity((int)(__instance.QuantityPerExchange.Value * .SetValue(new Quantity((int)(__instance.QuantityPerExchange.Value *
Main.depotTransferSpeedMultiplier.Value))); Main.depotTransferSpeedMultiplier.Value)));
// Console.WriteLine("IndustrialCyka: New storage capacity: {0}", __instance.Capacity.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New depot transfer speed {0}", __instance.QuantityPerExchange);
} }
[HarmonyPostfix] [HarmonyPostfix]
@@ -258,7 +280,9 @@ namespace CykaOfIndustry {
typeof(IEnumerable<Tag>), typeof(IEnumerable<Tag>),
})] })]
static void worldMineSpeedMultiplier(WorldMapMineProto __instance) { static void worldMineSpeedMultiplier(WorldMapMineProto __instance) {
// Console.WriteLine("Before: {0}", __instance.ProducedProductPerStep.Quantity.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old world mine speed {0}",
__instance.ProducedProductPerStep.Quantity);
ProductQuantity newProductQuantity = new ProductQuantity(__instance.ProducedProductPerStep.Product, ProductQuantity newProductQuantity = new ProductQuantity(__instance.ProducedProductPerStep.Product,
new Quantity((int)(__instance.ProducedProductPerStep.Quantity.Value * new Quantity((int)(__instance.ProducedProductPerStep.Quantity.Value *
Main.worldMineSpeedMultiplier.Value))); Main.worldMineSpeedMultiplier.Value)));
@@ -266,7 +290,9 @@ namespace CykaOfIndustry {
Traverse.Create(__instance) Traverse.Create(__instance)
.Field("ProducedProductPerStep") .Field("ProducedProductPerStep")
.SetValue(newProductQuantity); .SetValue(newProductQuantity);
// Console.WriteLine("After: {0}", __instance.ProducedProductPerStep.Quantity.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New world mine speed {0}",
__instance.ProducedProductPerStep.Quantity);
} }
[HarmonyPostfix] [HarmonyPostfix]
@@ -297,9 +323,8 @@ namespace CykaOfIndustry {
int newLevelsPerUpgrade = 10; int newLevelsPerUpgrade = 10;
int newMaxLevel = (int)Math.Ceiling((double)maxLevel / newLevelsPerUpgrade) * newLevelsPerUpgrade; int newMaxLevel = (int)Math.Ceiling((double)maxLevel / newLevelsPerUpgrade) * newLevelsPerUpgrade;
// Console.WriteLine("Level: {0}, MaxLevel: {1}, LevelsPerUpgrade: {2}", level, maxLevel, levelsPerUpgrade); if (Main.debugMode.Value)
// Console.WriteLine("NewMaxLevel: {0}", newMaxLevel); Console.WriteLine("IndustrialCyka: Old max level {0}, new max level {1}", maxLevel, newMaxLevel);
traverse.Field("MaxLevel").SetValue(newMaxLevel); traverse.Field("MaxLevel").SetValue(newMaxLevel);
traverse.Field("LevelsPerUpgrade").SetValue(newLevelsPerUpgrade); traverse.Field("LevelsPerUpgrade").SetValue(newLevelsPerUpgrade);
} }
@@ -341,6 +366,8 @@ namespace CykaOfIndustry {
if (codes[i].opcode.Equals(matchTable[matches])) { if (codes[i].opcode.Equals(matchTable[matches])) {
if (matches == totalMatch - 1) { if (matches == totalMatch - 1) {
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Patching world mine level increment");
codes[i + 4].opcode = OpCodes.Add; codes[i + 4].opcode = OpCodes.Add;
codes[i + 5].opcode = OpCodes.Brtrue_S; codes[i + 5].opcode = OpCodes.Brtrue_S;
break; break;
@@ -370,8 +397,12 @@ namespace CykaOfIndustry {
typeof(SettlementHousingModuleProto.Gfx), typeof(SettlementHousingModuleProto.Gfx),
})] })]
static void housingCapacityMultiplier(SettlementHousingModuleProto __instance) { static void housingCapacityMultiplier(SettlementHousingModuleProto __instance) {
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old housing capacity {0}", __instance.Capacity);
Traverse.Create(__instance).Field<int>("Capacity").Value = Traverse.Create(__instance).Field<int>("Capacity").Value =
(int)(__instance.Capacity * Main.housingCapacityMultiplier.Value); (int)(__instance.Capacity * Main.housingCapacityMultiplier.Value);
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New housing capacity {0}", __instance.Capacity);
} }
[HarmonyPostfix] [HarmonyPostfix]
@@ -390,9 +421,13 @@ namespace CykaOfIndustry {
typeof(IEnumerable<Tag>), typeof(IEnumerable<Tag>),
})] })]
static void dumpDelayMultiplier(StackerProto __instance) { static void dumpDelayMultiplier(StackerProto __instance) {
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old dumpDelay {0}", __instance.DumpDelay);
Duration newDelay = Duration newDelay =
new Duration(Math.Max((int)(__instance.DumpDelay.Ticks * Main.dumpDelayMultiplier.Value), 1)); new Duration(Math.Max((int)(__instance.DumpDelay.Ticks * Main.dumpDelayMultiplier.Value), 1));
Traverse.Create(__instance).Field("DumpDelay").SetValue(newDelay); Traverse.Create(__instance).Field("DumpDelay").SetValue(newDelay);
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New dumpDelay {0}", __instance.DumpDelay);
} }
[HarmonyPrefix] [HarmonyPrefix]
@@ -435,9 +470,14 @@ namespace CykaOfIndustry {
if (IoPort.MAX_TRANSFER_PER_TICK.Value < 10000) if (IoPort.MAX_TRANSFER_PER_TICK.Value < 10000)
typeof(IoPort).GetField("MAX_TRANSFER_PER_TICK").SetValue(null, new Quantity(10000)); typeof(IoPort).GetField("MAX_TRANSFER_PER_TICK").SetValue(null, new Quantity(10000));
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Old maxQuantityPerTransportedProduct {0}",
maxQuantityPerTransportedProduct);
maxQuantityPerTransportedProduct *= 1000; maxQuantityPerTransportedProduct *= 1000;
maxQuantityPerTransportedProduct = maxQuantityPerTransportedProduct.Min(new Quantity(10000)); maxQuantityPerTransportedProduct = maxQuantityPerTransportedProduct.Min(new Quantity(10000));
Console.WriteLine("maxQuantityPerTransportedProduct {0}", maxQuantityPerTransportedProduct); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: New maxQuantityPerTransportedProduct {0}",
maxQuantityPerTransportedProduct);
speedPerTick *= 10; speedPerTick *= 10;
transportedProductsSpacing = speedPerTick; transportedProductsSpacing = speedPerTick;
@@ -469,9 +509,13 @@ namespace CykaOfIndustry {
[HarmonyPatch(typeof(Excavator), "MineMixedAt")] [HarmonyPatch(typeof(Excavator), "MineMixedAt")]
public class MineMixedAtPatch { public class MineMixedAtPatch {
public static Dictionary<Excavator, Quantity> originalCapacity = new Dictionary<Excavator, Quantity>(); public static Dictionary<Excavator, Quantity> originalCapacity = new Dictionary<Excavator, Quantity>();
public static Dictionary<Excavator, ImmutableArray<ThicknessTilesF>> originalMinedThicknessByDistance = public static Dictionary<Excavator, ImmutableArray<ThicknessTilesF>> originalMinedThicknessByDistance =
new Dictionary<Excavator, ImmutableArray<ThicknessTilesF>>(); new Dictionary<Excavator, ImmutableArray<ThicknessTilesF>>();
public static Dictionary<ExcavatorProto.Timings, int> originalMineTileIterations =
new Dictionary<ExcavatorProto.Timings, int>();
static void Prefix(ref Excavator __instance) { static void Prefix(ref Excavator __instance) {
if (!originalCapacity.ContainsKey(__instance)) { if (!originalCapacity.ContainsKey(__instance)) {
originalCapacity.Add(__instance, __instance.Prototype.Capacity); originalCapacity.Add(__instance, __instance.Prototype.Capacity);
@@ -480,7 +524,8 @@ namespace CykaOfIndustry {
var trav = Traverse.Create(__instance.Prototype); var trav = Traverse.Create(__instance.Prototype);
trav.Field("Capacity") trav.Field("Capacity")
.SetValue(new Quantity(originalCapacity[__instance].Value * Main.excavatorCapacityMultiplier.Value)); .SetValue(new Quantity(originalCapacity[__instance].Value * Main.excavatorCapacityMultiplier.Value));
// Console.WriteLine("IndustrialCyka: Excavator capacity: {0}", __instance.Prototype.Capacity.Value); if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Excavator capacity: {0}", __instance.Prototype.Capacity.Value);
if (!originalMinedThicknessByDistance.ContainsKey(__instance)) { if (!originalMinedThicknessByDistance.ContainsKey(__instance)) {
originalMinedThicknessByDistance.Add(__instance, originalMinedThicknessByDistance.Add(__instance,