Add birthing configs

This commit is contained in:
2024-09-28 19:06:38 +02:00
parent bf982418ca
commit e95e86092a

View File

@@ -11,6 +11,7 @@ using Gameplay.GameResources;
using Gameplay.InGameResources;
using Gameplay.Rebuilding;
using Gameplay.Scavenge;
using Gameplay.Units.Characters;
using Gameplay.Units.Icons;
using Gameplay.Units.Movements;
using Gameplay.Units.Workers.WorkSystem.Works;
@@ -50,6 +51,16 @@ namespace InfectionFreeZone {
public static ConfigEntry<float> constructionTimeMultiplier;
public static ConfigEntry<float> productionTimeMultiplier;
public static ConfigEntry<int> maxCitizensInZoneToChildrenBorn;
public static ConfigEntry<float> moraleInfluenceFloorParam;
public static ConfigEntry<float> moraleInfluenceCeilingParam;
public static ConfigEntry<float> foodStockInfluenceFloorParam;
public static ConfigEntry<float> foodStockInfluenceCeilingParam;
public static ConfigEntry<float> quartersRatioInfluenceFloorParam;
public static ConfigEntry<float> quartersRatioInfluenceCeilingParam;
public static ConfigEntry<float> childToAdultRatioInfluenceFloorParam;
public static ConfigEntry<float> childToAdultRatioInfluenceCeilingParam;
public void Awake() {
debug = Config.Bind("General", "Debug", false);
@@ -67,6 +78,21 @@ namespace InfectionFreeZone {
constructionTimeMultiplier = Config.Bind("General", "Construction Time Multiplier", 1f);
productionTimeMultiplier = Config.Bind("General", "Production Time Multiplier", 1f);
maxCitizensInZoneToChildrenBorn =
Config.Bind("Birthing Config", "Max Citizens in Zone to Children Born", 600);
moraleInfluenceFloorParam = Config.Bind("Birthing Config", "Morale Influence Floor Param", 0.3f);
moraleInfluenceCeilingParam = Config.Bind("Birthing Config", "Morale Influence Ceiling Param", 2f);
foodStockInfluenceFloorParam = Config.Bind("Birthing Config", "Food Stock Influence Floor Param", 0f);
foodStockInfluenceCeilingParam = Config.Bind("Birthing Config", "Food Stock Influence Ceiling Param", 1f);
quartersRatioInfluenceFloorParam =
Config.Bind("Birthing Config", "Quarters Ratio Influence Floor Param", 0.6f);
quartersRatioInfluenceCeilingParam =
Config.Bind("Birthing Config", "Quarters Ratio Influence Ceiling Param", 1.4f);
childToAdultRatioInfluenceFloorParam =
Config.Bind("Birthing Config", "Child to Adult Ratio Influence Floor Param", 1f);
childToAdultRatioInfluenceCeilingParam =
Config.Bind("Birthing Config", "Child to Adult Ratio Influence Ceiling Param", 0f);
Logger.LogInfo("Cyka mod loaded");
HarmonyFileLog.Enabled = true;
Harmony harmony = new Harmony(pluginGuid);
@@ -182,7 +208,7 @@ namespace InfectionFreeZone {
[HarmonyPatch(typeof(Building), "DeconstructionResources", MethodType.Getter)]
public static ResourceQuantity[] PostfixDeconstructionResources(ResourceQuantity[] __result) {
if (Main.buildingDeconstructionResourcesMultiplier.Value <= 0)
return;
return __result;
ResourceQuantity[] modifiedResult = new ResourceQuantity[__result.Length];
for (int i = 0; i < __result.Length; i++) {
@@ -279,5 +305,21 @@ namespace InfectionFreeZone {
if (Main.debug.Value)
Console.WriteLine($"Production time modified to {__result}");
}
[HarmonyPostfix]
[HarmonyPatch(typeof(CharactersConfig), MethodType.Constructor, new Type[] { })]
public static void PostfixCharactersConfig(CharactersConfig __instance) {
__instance.bornConfig.MaxCitizensInZoneToChildrenBorn = Main.maxCitizensInZoneToChildrenBorn.Value;
__instance.bornConfig.MoraleInfluenceFloorParam = Main.moraleInfluenceFloorParam.Value;
__instance.bornConfig.MoraleInfluenceCeilingParam = Main.moraleInfluenceCeilingParam.Value;
__instance.bornConfig.FoodStockInfluenceFloorParam = Main.foodStockInfluenceFloorParam.Value;
__instance.bornConfig.FoodStockInfluenceCeilingParam = Main.foodStockInfluenceCeilingParam.Value;
__instance.bornConfig.QuartersRatioInfluenceFloorParam = Main.quartersRatioInfluenceFloorParam.Value;
__instance.bornConfig.QuartersRatioInfluenceCeilingParam = Main.quartersRatioInfluenceCeilingParam.Value;
__instance.bornConfig.ChildToAdultRatioInfluenceFloorParam =
Main.childToAdultRatioInfluenceFloorParam.Value;
__instance.bornConfig.ChildToAdultRatioInfluenceCeilingParam =
Main.childToAdultRatioInfluenceCeilingParam.Value;
}
}
}