using BepInEx.Configuration; using HarmonyLib; namespace BanquetForCyka { [HarmonyPatch] public class TankBeamManager { private static readonly MultipliedObjectManager Manager = new MultipliedObjectManager(ConfigureBeam); public static ConfigEntry hoverClearanceMultiplier; public static ConfigEntry nudgeSpeedForwardMultiplier; public static ConfigEntry nudgeSpeedRotateMultiplier; public static void Setup(ConfigFile config) { float min = 0.01f; float max = 32f; hoverClearanceMultiplier = config.Bind( "TankBeam", "Hover Clearance Multiplier", 1f, new ConfigDescription("Hover Clearance Multiplier", new AcceptableValueRange(min, max))); hoverClearanceMultiplier.SettingChanged += (sender, args) => DoPatch(); nudgeSpeedForwardMultiplier = config.Bind( "TankBeam", "Nudge Speed Forward Multiplier", 1f, new ConfigDescription("Nudge Speed Forward Multiplier", new AcceptableValueRange(min, max))); nudgeSpeedForwardMultiplier.SettingChanged += (sender, args) => DoPatch(); nudgeSpeedRotateMultiplier = config.Bind( "TankBeam", "Nudge Speed Rotate Multiplier", 1f, new ConfigDescription("Nudge Speed Rotate Multiplier", new AcceptableValueRange(min, max))); nudgeSpeedRotateMultiplier.SettingChanged += (sender, args) => DoPatch(); } private static void ConfigureBeam(MultipliedObject obj) { obj.AddField(new FieldConfiguration("hoverClearance", hoverClearanceMultiplier)); obj.AddField(new FieldConfiguration("nudgeSpeedForward", nudgeSpeedForwardMultiplier)); obj.AddField(new FieldConfiguration("nudgeSpeedRotate", nudgeSpeedRotateMultiplier)); } [HarmonyPrefix] [HarmonyPatch(typeof(TankBeam), "EnableBeam")] public static void PostfixCreate(TankBeam __instance, ref bool enable) { if (enable) Manager.OnObjectAttached(__instance); else Manager.OnObjectDetached(__instance); } public static void DoPatch() { Manager.ApplyAll(); } } }