diff --git a/Projects/TerraTech/TerraTech/Class1.cs b/Projects/TerraTech/TerraTech/Class1.cs index 9286865..83a3c39 100644 --- a/Projects/TerraTech/TerraTech/Class1.cs +++ b/Projects/TerraTech/TerraTech/Class1.cs @@ -49,11 +49,6 @@ namespace TerraTech { public static ConfigEntry aerofoilAngleTurnSpeedMultiplier; public static ConfigEntry aerofoilLiftStrengthMultiplier; - public static ConfigEntry shieldRadiusMultiplier; - public static ConfigEntry shieldRadiusMultiplierHealing; - public static ConfigEntry shieldHeartbeatIntervalMultiplier; - public static ConfigEntry shieldPowerUpDelayMultiplier; - public static ConfigEntry fireDataKickbackStrengthMultiplier; public static ConfigEntry fireDataMuzzleVelocityMultiplier; @@ -87,25 +82,6 @@ namespace TerraTech { "General", "Heartbeat Interval Multiplier", 1f, new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange(min, max))); - shieldRadiusMultiplier = Config.Bind( - "Shield", "Shield Radius Multiplier", 1f, - new ConfigDescription("Shield Radius Multiplier", new AcceptableValueRange(min, max))); - shieldRadiusMultiplier.SettingChanged += (sender, args) => ModuleShieldGeneratorManager.DoPatch(); - shieldHeartbeatIntervalMultiplier = - Config.Bind("Shield", "Shield Heartbeat Interval Multiplier", 1f, - new ConfigDescription("Shield Heartbeat Interval Multiplier", - new AcceptableValueRange(min, max))); - shieldHeartbeatIntervalMultiplier.SettingChanged += (sender, args) => - ModuleShieldGeneratorManager.DoPatch(); - shieldPowerUpDelayMultiplier = Config.Bind( - "Shield", "Shield Power Up Delay Multiplier", 1f, - new ConfigDescription("Shield Power Up Delay Multiplier", new AcceptableValueRange(min, max))); - shieldPowerUpDelayMultiplier.SettingChanged += (sender, args) => ModuleShieldGeneratorManager.DoPatch(); - shieldRadiusMultiplierHealing = Config.Bind( - "Shield", "Shield Radius Multiplier Healing", 1f, - new ConfigDescription("Shield Radius Multiplier Healing", new AcceptableValueRange(min, max))); - shieldRadiusMultiplierHealing.SettingChanged += (sender, args) => ModuleShieldGeneratorManager.DoPatch(); - fireDataKickbackStrengthMultiplier = Config.Bind("FireData", "Fire Data Kickback Strength Multiplier", 1f, new ConfigDescription("Fire Data Kickback Strength Multiplier", diff --git a/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs b/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs index 8feb124..223f093 100644 --- a/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs +++ b/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs @@ -1,4 +1,5 @@ using System; +using BepInEx.Configuration; using HarmonyLib; namespace TerraTech { @@ -6,20 +7,51 @@ namespace TerraTech { public class ModuleShieldGeneratorManager { private static readonly MultipliedObjectManager manager = new MultipliedObjectManager(ConfigureShieldGenerator); + public static ConfigEntry shieldRadiusMultiplier; + public static ConfigEntry shieldRadiusMultiplierHealing; + public static ConfigEntry shieldHeartbeatIntervalMultiplier; + public static ConfigEntry shieldPowerUpDelayMultiplier; + + public static void Setup(ConfigFile config) { + float min = 0.01f; + float max = 32f; + + shieldRadiusMultiplier = config.Bind( + "Shield", "Shield Radius Multiplier", 1f, + new ConfigDescription("Shield Radius Multiplier", new AcceptableValueRange(min, max))); + shieldRadiusMultiplier.SettingChanged += (sender, args) => ModuleShieldGeneratorManager.DoPatch(); + + shieldHeartbeatIntervalMultiplier = + config.Bind("Shield", "Shield Heartbeat Interval Multiplier", 1f, + new ConfigDescription("Shield Heartbeat Interval Multiplier", + new AcceptableValueRange(min, max))); + shieldHeartbeatIntervalMultiplier.SettingChanged += (sender, args) => + + ModuleShieldGeneratorManager.DoPatch(); + shieldPowerUpDelayMultiplier = config.Bind( + "Shield", "Shield Power Up Delay Multiplier", 1f, + new ConfigDescription("Shield Power Up Delay Multiplier", new AcceptableValueRange(min, max))); + shieldPowerUpDelayMultiplier.SettingChanged += (sender, args) => ModuleShieldGeneratorManager.DoPatch(); + + shieldRadiusMultiplierHealing = config.Bind( + "Shield", "Shield Radius Multiplier Healing", 1f, + new ConfigDescription("Shield Radius Multiplier Healing", new AcceptableValueRange(min, max))); + shieldRadiusMultiplierHealing.SettingChanged += (sender, args) => ModuleShieldGeneratorManager.DoPatch(); + } private static void ConfigureShieldGenerator(MultipliedObject obj) { - // Healing heartbeat interval - no condition - obj.AddField( - new FieldConfiguration("m_HealingHeartbeatInterval", Main.shieldHeartbeatIntervalMultiplier)); + obj.AddField(new FieldConfiguration("m_HealingHeartbeatInterval", + ModuleShieldGeneratorManager.shieldHeartbeatIntervalMultiplier)); - // Radius - conditional based on healing status - obj.AddField(new FieldConfiguration("m_Radius", Main.shieldRadiusMultiplier, instance => { - var shield = (ModuleShieldGenerator)instance; - return shield.m_Healing ? Main.shieldRadiusMultiplierHealing : Main.shieldRadiusMultiplier; - })); + obj.AddField(new FieldConfiguration( + "m_Radius", ModuleShieldGeneratorManager.shieldRadiusMultiplier, instance => { + var shield = (ModuleShieldGenerator)instance; + return shield.m_Healing ? ModuleShieldGeneratorManager.shieldRadiusMultiplierHealing + : ModuleShieldGeneratorManager.shieldRadiusMultiplier; + })); - // Power up delay - no condition - obj.AddField(new FieldConfiguration("m_PowerUpDelay", Main.shieldPowerUpDelayMultiplier)); + obj.AddField(new FieldConfiguration("m_PowerUpDelay", + ModuleShieldGeneratorManager.shieldPowerUpDelayMultiplier)); } [HarmonyPrefix]