Add building deconstruct resource multiplier
This commit is contained in:
@@ -4,7 +4,9 @@ using System.Linq;
|
|||||||
using BepInEx;
|
using BepInEx;
|
||||||
using BepInEx.Configuration;
|
using BepInEx.Configuration;
|
||||||
using GameCustomization;
|
using GameCustomization;
|
||||||
|
using Gameplay.Buildings;
|
||||||
using Gameplay.GameResources;
|
using Gameplay.GameResources;
|
||||||
|
using Gameplay.InGameResources;
|
||||||
using Gameplay.Scavenge;
|
using Gameplay.Scavenge;
|
||||||
using Gameplay.Units.Workers.WorkSystem.Works;
|
using Gameplay.Units.Workers.WorkSystem.Works;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
@@ -32,6 +34,7 @@ namespace InfectionFreeZone {
|
|||||||
public static ConfigEntry<float> resourceScavengingMultiplier;
|
public static ConfigEntry<float> resourceScavengingMultiplier;
|
||||||
public static ConfigEntry<float> buildingStorageCapacityMultiplier;
|
public static ConfigEntry<float> buildingStorageCapacityMultiplier;
|
||||||
public static ConfigEntry<float> buildingQuartersCapacityMultiplier;
|
public static ConfigEntry<float> buildingQuartersCapacityMultiplier;
|
||||||
|
public static ConfigEntry<float> buildingDeconstructionResourcesMultiplier;
|
||||||
// public static ConfigEntry<float> workSpeedMultiplier;
|
// public static ConfigEntry<float> workSpeedMultiplier;
|
||||||
|
|
||||||
public void Awake() {
|
public void Awake() {
|
||||||
@@ -42,6 +45,7 @@ namespace InfectionFreeZone {
|
|||||||
resourceScavengingMultiplier = Config.Bind("General", "ResourceScavengingMultiplier", 1f);
|
resourceScavengingMultiplier = Config.Bind("General", "ResourceScavengingMultiplier", 1f);
|
||||||
buildingStorageCapacityMultiplier = Config.Bind("General", "BuildingStorageCapacityMultiplier", 1f);
|
buildingStorageCapacityMultiplier = Config.Bind("General", "BuildingStorageCapacityMultiplier", 1f);
|
||||||
buildingQuartersCapacityMultiplier = Config.Bind("General", "BuildingQuartersCapacityMultiplier", 1f);
|
buildingQuartersCapacityMultiplier = Config.Bind("General", "BuildingQuartersCapacityMultiplier", 1f);
|
||||||
|
buildingDeconstructionResourcesMultiplier = Config.Bind("General", "BuildingDeconstructionResourcesMultiplier", 1f);
|
||||||
// workSpeedMultiplier = Config.Bind("General", "WorkSpeedMultiplier", 1f);
|
// workSpeedMultiplier = Config.Bind("General", "WorkSpeedMultiplier", 1f);
|
||||||
|
|
||||||
Logger.LogInfo("Cyka mod loaded");
|
Logger.LogInfo("Cyka mod loaded");
|
||||||
@@ -118,7 +122,7 @@ namespace InfectionFreeZone {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HarmonyPostfix]
|
[HarmonyPostfix]
|
||||||
[HarmonyPatch(typeof(PlaceableObjectDraft), "GetCapacity")]
|
[HarmonyPatch(typeof(PlaceableObjectDraft), "GetCapacity", typeof(float), typeof(float))]
|
||||||
public static void PostfixGetCapacity(ref int __result) {
|
public static void PostfixGetCapacity(ref int __result) {
|
||||||
if (Main.buildingStorageCapacityMultiplier.Value <= 0)
|
if (Main.buildingStorageCapacityMultiplier.Value <= 0)
|
||||||
return;
|
return;
|
||||||
@@ -142,6 +146,28 @@ namespace InfectionFreeZone {
|
|||||||
if (Main.debug.Value)
|
if (Main.debug.Value)
|
||||||
Console.WriteLine($"Building capacity modified to {__result}");
|
Console.WriteLine($"Building capacity modified to {__result}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HarmonyPostfix]
|
||||||
|
[HarmonyPatch(typeof(Building), "DeconstructionResources", MethodType.Getter)]
|
||||||
|
public static void PostfixDeconstructionResources(ref ResourceQuantity[] __result) {
|
||||||
|
if (Main.buildingDeconstructionResourcesMultiplier.Value <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (Main.debug.Value)
|
||||||
|
Console.WriteLine($"Deconstruction resources is {__result}");
|
||||||
|
|
||||||
|
for (int i = 0; i < __result.Length; i++) {
|
||||||
|
var resourceQuantity = __result[i];
|
||||||
|
if (Main.debug.Value)
|
||||||
|
Console.WriteLine($"Resource quantity is {resourceQuantity}");
|
||||||
|
|
||||||
|
if (Main.debug.Value)
|
||||||
|
Console.WriteLine($"Resource quantity value is {resourceQuantity.value}");
|
||||||
|
resourceQuantity.value *= Main.buildingDeconstructionResourcesMultiplier.Value;
|
||||||
|
if (Main.debug.Value)
|
||||||
|
Console.WriteLine($"Resource quantity value modified to {resourceQuantity.value}");
|
||||||
|
}
|
||||||
|
}
|
||||||
// private void InstantiateResources()
|
// private void InstantiateResources()
|
||||||
// {
|
// {
|
||||||
// foreach (KeyValuePair<ResourceID, int> generatedResource in this._resourcesToDrop)
|
// foreach (KeyValuePair<ResourceID, int> generatedResource in this._resourcesToDrop)
|
||||||
|
Reference in New Issue
Block a user