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.CharacterLogic;
using Controllers.Weather; using Controllers.Weather;
using GameCustomization; using GameCustomization;
using Gameplay;
using Gameplay.Buildings; using Gameplay.Buildings;
using Gameplay.GameResources; using Gameplay.GameResources;
using Gameplay.InGameResources; using Gameplay.InGameResources;
@@ -19,6 +20,7 @@ using Gameplay.Units.Workers.WorkSystem.Works;
using Gameplay.Vehicles; using Gameplay.Vehicles;
using HarmonyLib; using HarmonyLib;
using HarmonyLib.Tools; using HarmonyLib.Tools;
using MapEssentials.Temp;
using Zenject; using Zenject;
// See: // See:
@@ -65,6 +67,7 @@ namespace InfectionFreeZone {
public static ConfigEntry<bool> deconstructionTimeMultiplierDebug; public static ConfigEntry<bool> deconstructionTimeMultiplierDebug;
public static ConfigEntry<float> deconstructionTimeMultiplier; public static ConfigEntry<float> deconstructionTimeMultiplier;
public static ConfigEntry<float> deconstructionWorkersPer100m;
public static ConfigEntry<bool> constructionTimeMultiplierDebug; public static ConfigEntry<bool> constructionTimeMultiplierDebug;
public static ConfigEntry<float> constructionTimeMultiplier; public static ConfigEntry<float> constructionTimeMultiplier;
@@ -108,6 +111,8 @@ namespace InfectionFreeZone {
"Building Deconstruction Resources Multiplier Debug", false); "Building Deconstruction Resources Multiplier Debug", false);
buildingDeconstructionResourcesMultiplier = buildingDeconstructionResourcesMultiplier =
Config.Bind("General", "Building Deconstruction Resources Multiplier", 1f); 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); humanMovementSpeedMultiplier = Config.Bind("General", "Human Movement Speed Multiplier", 1f);
@@ -279,6 +284,24 @@ namespace InfectionFreeZone {
return modifiedResult; 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] [HarmonyPostfix]
[HarmonyPatch(typeof(Movement), "CalculateSpeed")] [HarmonyPatch(typeof(Movement), "CalculateSpeed")]
public static void PostfixCalculateSpeedHuman(Movement __instance, ref float __result) { public static void PostfixCalculateSpeedHuman(Movement __instance, ref float __result) {