Implement actual excavator mining area multiplier

This commit is contained in:
2024-10-19 22:24:34 +02:00
parent b786897b9f
commit a95bf892ab
2 changed files with 23 additions and 9 deletions

View File

@@ -17,7 +17,8 @@ namespace CykaOfIndustry {
public static ConfigEntry<float> excavatorMineTileIterationsMultiplier;
public static ConfigEntry<int> truckCapacityMultiplier;
public static ConfigEntry<int> cargoShipCapacityMultiplier;
public static ConfigEntry<float> excavatorMiningAreaMultiplier;
public static ConfigEntry<float> excavatorMiningCapacityMultiplier;
public static ConfigEntry<int> excavatorMiningAreaMultiplier;
public static ConfigEntry<float> excavatorMinReachMultiplier;
public static ConfigEntry<float> excavatorMaxReachMultiplier;
public static ConfigEntry<float> bufferCapacityMultiplier;
@@ -29,6 +30,7 @@ namespace CykaOfIndustry {
public static ConfigEntry<float> transportSpeedMultiplier;
public static ConfigEntry<float> shipyardCargoMultiplier;
public static ConfigEntry<int> autosaveInterval;
public static ConfigEntry<bool> 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();

View File

@@ -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<ExcavatorProto, Quantity> originalCapacity = new Dictionary<ExcavatorProto, Quantity>();
public static Dictionary<ExcavatorProto, Quantity>
originalCapacity = new Dictionary<ExcavatorProto, Quantity>();
public static Dictionary<ExcavatorProto, ImmutableArray<ThicknessTilesF>> originalMinedThicknessByDistance =
new Dictionary<ExcavatorProto, ImmutableArray<ThicknessTilesF>>();
public static Dictionary<ExcavatorProto.Timings, int> originalMineTileIterations =
new Dictionary<ExcavatorProto.Timings, int>();
public static Dictionary<ExcavatorProto, RelTile1i> originalMaxMiningDistance =
new Dictionary<ExcavatorProto, RelTile1i>();
@@ -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<RelTile1i>());
originalMaxMiningDistance.Add(__instance.Prototype,
trav.Field("MaxMiningDistance").GetValue<RelTile1i>());
}
var value = originalMaxMiningDistance[__instance.Prototype];
var newValueMiningDistance = new RelTile1i((int)(value.Value * Main.excavatorMaxReachMultiplier.Value));
trav.Field("MaxMiningDistance")