Implement actual excavator mining area multiplier
This commit is contained in:
@@ -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();
|
||||
|
@@ -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")
|
||||
|
Reference in New Issue
Block a user