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<float> excavatorMineTileIterationsMultiplier;
|
||||||
public static ConfigEntry<int> truckCapacityMultiplier;
|
public static ConfigEntry<int> truckCapacityMultiplier;
|
||||||
public static ConfigEntry<int> cargoShipCapacityMultiplier;
|
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> excavatorMinReachMultiplier;
|
||||||
public static ConfigEntry<float> excavatorMaxReachMultiplier;
|
public static ConfigEntry<float> excavatorMaxReachMultiplier;
|
||||||
public static ConfigEntry<float> bufferCapacityMultiplier;
|
public static ConfigEntry<float> bufferCapacityMultiplier;
|
||||||
@@ -29,6 +30,7 @@ namespace CykaOfIndustry {
|
|||||||
public static ConfigEntry<float> transportSpeedMultiplier;
|
public static ConfigEntry<float> transportSpeedMultiplier;
|
||||||
public static ConfigEntry<float> shipyardCargoMultiplier;
|
public static ConfigEntry<float> shipyardCargoMultiplier;
|
||||||
public static ConfigEntry<int> autosaveInterval;
|
public static ConfigEntry<int> autosaveInterval;
|
||||||
|
|
||||||
public static ConfigEntry<bool> debugMode;
|
public static ConfigEntry<bool> debugMode;
|
||||||
|
|
||||||
public void Awake() {
|
public void Awake() {
|
||||||
@@ -41,8 +43,10 @@ namespace CykaOfIndustry {
|
|||||||
new ConfigDescription("Truck Capacity Multiplier"));
|
new ConfigDescription("Truck Capacity Multiplier"));
|
||||||
cargoShipCapacityMultiplier = Config.Bind("General", "Cargo Ship Capacity Multiplier", 1,
|
cargoShipCapacityMultiplier = Config.Bind("General", "Cargo Ship Capacity Multiplier", 1,
|
||||||
new ConfigDescription("Cargo Ship Capacity Multiplier"));
|
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"));
|
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,
|
excavatorMinReachMultiplier = Config.Bind("General", "Excavator Min Reach Multiplier", 1f,
|
||||||
new ConfigDescription("Excavator Min Reach Multiplier"));
|
new ConfigDescription("Excavator Min Reach Multiplier"));
|
||||||
excavatorMaxReachMultiplier = Config.Bind("General", "Excavator Max Reach Multiplier", 1f,
|
excavatorMaxReachMultiplier = Config.Bind("General", "Excavator Max Reach Multiplier", 1f,
|
||||||
@@ -67,6 +71,7 @@ namespace CykaOfIndustry {
|
|||||||
new ConfigDescription("Shipyard Cargo Multiplier"));
|
new ConfigDescription("Shipyard Cargo Multiplier"));
|
||||||
autosaveInterval = Config.Bind("General", "Autosave Interval", 1,
|
autosaveInterval = Config.Bind("General", "Autosave Interval", 1,
|
||||||
new ConfigDescription("Autosave Interval in minutes"));
|
new ConfigDescription("Autosave Interval in minutes"));
|
||||||
|
|
||||||
debugMode = Config.Bind("General", "Debug Mode", false, new ConfigDescription("Debug Mode"));
|
debugMode = Config.Bind("General", "Debug Mode", false, new ConfigDescription("Debug Mode"));
|
||||||
|
|
||||||
// shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch();
|
// shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch();
|
||||||
|
@@ -45,7 +45,7 @@ namespace CykaOfIndustry {
|
|||||||
for (int i = 0; i < thicknessMeters.Length; i++) {
|
for (int i = 0; i < thicknessMeters.Length; i++) {
|
||||||
if (Main.debugMode.Value)
|
if (Main.debugMode.Value)
|
||||||
Console.WriteLine("IndustrialCyka: Old mining area {0}", thicknessMeters[i]);
|
Console.WriteLine("IndustrialCyka: Old mining area {0}", thicknessMeters[i]);
|
||||||
thicknessMeters[i] *= Main.excavatorMiningAreaMultiplier.Value;
|
thicknessMeters[i] *= Main.excavatorMiningCapacityMultiplier.Value;
|
||||||
if (Main.debugMode.Value)
|
if (Main.debugMode.Value)
|
||||||
Console.WriteLine("IndustrialCyka: New mining area {0}", thicknessMeters[i]);
|
Console.WriteLine("IndustrialCyka: New mining area {0}", thicknessMeters[i]);
|
||||||
}
|
}
|
||||||
@@ -505,6 +505,7 @@ namespace CykaOfIndustry {
|
|||||||
Traverse.Create(__instance).Field("CargoCapacity").SetValue(new Quantity(
|
Traverse.Create(__instance).Field("CargoCapacity").SetValue(new Quantity(
|
||||||
(int)(__instance.CargoCapacity.Value * Main.shipyardCargoMultiplier.Value)));
|
(int)(__instance.CargoCapacity.Value * Main.shipyardCargoMultiplier.Value)));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HarmonyPostfix]
|
[HarmonyPostfix]
|
||||||
[HarmonyPatch(typeof(SaveManager), "isTimeForAutoSave")]
|
[HarmonyPatch(typeof(SaveManager), "isTimeForAutoSave")]
|
||||||
static void autosaveInterval(ref bool __result, SaveManager __instance) {
|
static void autosaveInterval(ref bool __result, SaveManager __instance) {
|
||||||
@@ -524,14 +525,15 @@ namespace CykaOfIndustry {
|
|||||||
|
|
||||||
[HarmonyPatch(typeof(Excavator), "MineMixedAt")]
|
[HarmonyPatch(typeof(Excavator), "MineMixedAt")]
|
||||||
public class MineMixedAtPatch {
|
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 =
|
public static Dictionary<ExcavatorProto, ImmutableArray<ThicknessTilesF>> originalMinedThicknessByDistance =
|
||||||
new Dictionary<ExcavatorProto, ImmutableArray<ThicknessTilesF>>();
|
new Dictionary<ExcavatorProto, ImmutableArray<ThicknessTilesF>>();
|
||||||
|
|
||||||
public static Dictionary<ExcavatorProto.Timings, int> originalMineTileIterations =
|
public static Dictionary<ExcavatorProto.Timings, int> originalMineTileIterations =
|
||||||
new Dictionary<ExcavatorProto.Timings, int>();
|
new Dictionary<ExcavatorProto.Timings, int>();
|
||||||
|
|
||||||
public static Dictionary<ExcavatorProto, RelTile1i> originalMaxMiningDistance =
|
public static Dictionary<ExcavatorProto, RelTile1i> originalMaxMiningDistance =
|
||||||
new Dictionary<ExcavatorProto, RelTile1i>();
|
new Dictionary<ExcavatorProto, RelTile1i>();
|
||||||
|
|
||||||
@@ -542,7 +544,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.Prototype].Value * Main.excavatorCapacityMultiplier.Value));
|
.SetValue(new Quantity(originalCapacity[__instance.Prototype].Value *
|
||||||
|
Main.excavatorCapacityMultiplier.Value));
|
||||||
if (Main.debugMode.Value)
|
if (Main.debugMode.Value)
|
||||||
Console.WriteLine("IndustrialCyka: Excavator capacity: {0}", __instance.Prototype.Capacity.Value);
|
Console.WriteLine("IndustrialCyka: Excavator capacity: {0}", __instance.Prototype.Capacity.Value);
|
||||||
|
|
||||||
@@ -552,16 +555,22 @@ namespace CykaOfIndustry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trav.Field("MinedThicknessByDistance")
|
trav.Field("MinedThicknessByDistance")
|
||||||
.SetValue(originalMinedThicknessByDistance[__instance.Prototype].Select(t =>
|
.SetValue(originalMinedThicknessByDistance[__instance.Prototype]
|
||||||
new ThicknessTilesF((int)(t.Value.ToFloat() * Main.excavatorMiningAreaMultiplier.Value)))
|
.SelectMany(t => Enumerable.Repeat(t, Main.excavatorMiningAreaMultiplier.Value))
|
||||||
|
.Select(t =>
|
||||||
|
new ThicknessTilesF((int)(t.Value.ToFloat() * Main.excavatorMiningCapacityMultiplier.Value)))
|
||||||
.ToImmutableArray());
|
.ToImmutableArray());
|
||||||
|
if (Main.debugMode.Value)
|
||||||
|
originalMinedThicknessByDistance[__instance.Prototype].ForEach(t => Console.WriteLine(t.Value));
|
||||||
if (Main.debugMode.Value)
|
if (Main.debugMode.Value)
|
||||||
Console.WriteLine("IndustrialCyka: Excavator mined thickness: {0}",
|
Console.WriteLine("IndustrialCyka: Excavator mined thickness: {0}",
|
||||||
__instance.Prototype.MinedThicknessByDistance);
|
__instance.Prototype.MinedThicknessByDistance);
|
||||||
|
|
||||||
if (!originalMaxMiningDistance.ContainsKey(__instance.Prototype)) {
|
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 value = originalMaxMiningDistance[__instance.Prototype];
|
||||||
var newValueMiningDistance = new RelTile1i((int)(value.Value * Main.excavatorMaxReachMultiplier.Value));
|
var newValueMiningDistance = new RelTile1i((int)(value.Value * Main.excavatorMaxReachMultiplier.Value));
|
||||||
trav.Field("MaxMiningDistance")
|
trav.Field("MaxMiningDistance")
|
||||||
|
Reference in New Issue
Block a user