Add deconstruction workers setting

For more worker per building destruct
This commit is contained in:
2024-09-28 20:24:29 +02:00
parent 761b524f20
commit 4afa45fa4e

View File

@@ -7,6 +7,7 @@ using Controllers;
using Controllers.CharacterLogic;
using Controllers.Weather;
using GameCustomization;
using Gameplay;
using Gameplay.Buildings;
using Gameplay.GameResources;
using Gameplay.InGameResources;
@@ -19,6 +20,7 @@ using Gameplay.Units.Workers.WorkSystem.Works;
using Gameplay.Vehicles;
using HarmonyLib;
using HarmonyLib.Tools;
using MapEssentials.Temp;
using Zenject;
// See:
@@ -65,6 +67,7 @@ namespace InfectionFreeZone {
public static ConfigEntry<bool> deconstructionTimeMultiplierDebug;
public static ConfigEntry<float> deconstructionTimeMultiplier;
public static ConfigEntry<float> deconstructionWorkersPer100m;
public static ConfigEntry<bool> constructionTimeMultiplierDebug;
public static ConfigEntry<float> constructionTimeMultiplier;
@@ -108,6 +111,8 @@ namespace InfectionFreeZone {
"Building Deconstruction Resources Multiplier Debug", false);
buildingDeconstructionResourcesMultiplier =
Config.Bind("General", "Building Deconstruction Resources Multiplier", 1f);
deconstructionWorkersPer100m =
Config.Bind("General", "Building Deconstruction Workers Per 100m", 0.0045f);
humanMovementSpeedMultiplier = Config.Bind("General", "Human Movement Speed Multiplier", 1f);
@@ -279,6 +284,24 @@ namespace InfectionFreeZone {
return modifiedResult;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(BuildingDestruction), "Initialize")]
public static void PrefixBuildingDeconstruction(ref BuildingDestruction __instance) {
if (Main.deconstructionWorkersPer100m.Value <= 0)
return;
var trav = Traverse.Create(__instance);
var config = trav.Field<BuildingDestructionConfig>("_deconstructionConfig");
var configV = config.Value;
if (Main.buildingDeconstructionResourcesMultiplierDebug.Value)
Console.WriteLine($"Building deconstruction workers per 100m is {configV.deconstructWorkersPer100m3OfBuilding}");
configV.deconstructWorkersPer100m3OfBuilding = Main.deconstructionWorkersPer100m.Value;
config.Value = configV;
if (Main.buildingDeconstructionResourcesMultiplierDebug.Value)
Console.WriteLine($"Building deconstruction workers per 100m modified to {configV.deconstructWorkersPer100m3OfBuilding}");
}
[HarmonyPostfix]
[HarmonyPatch(typeof(Movement), "CalculateSpeed")]
public static void PostfixCalculateSpeedHuman(Movement __instance, ref float __result) {