using System; using BepInEx.Bootstrap; using BepInEx.Configuration; using HarmonyLib; using UXAssist.Patches; namespace UXAssist.ModsCompat; public static class AuxilaryfunctionWrapper { private const string AuxilaryfunctionGuid = "cn.blacksnipe.dsp.Auxilaryfunction"; public static ConfigEntry ShowStationInfo; public static void Start(Harmony harmony) { if (!Chainloader.PluginInfos.TryGetValue(AuxilaryfunctionGuid, out var pluginInfo)) return; var assembly = pluginInfo.Instance.GetType().Assembly; try { var classType = assembly.GetType("Auxilaryfunction.Auxilaryfunction"); ShowStationInfo = (ConfigEntry)AccessTools.Field(classType, "ShowStationInfo").GetValue(pluginInfo.Instance); } catch { UXAssist.Logger.LogWarning("Failed to get ShowStationInfo from Auxilaryfunction"); } try { var classType = assembly.GetType("Auxilaryfunction.Patch.SpeedUpPatch"); harmony.Patch(AccessTools.PropertySetter(classType, "Enable"), new HarmonyMethod(AccessTools.Method(typeof(AuxilaryfunctionWrapper), nameof(PatchSpeedUpPatchEnable)))); } catch { UXAssist.Logger.LogWarning("Failed to patch SpeedUpPatch.set_Enable() from Auxilaryfunction"); } } public static void PatchSpeedUpPatchEnable(bool value) { if (!value) { GamePatch.EnableGameUpsFactor = true; return; } if (Math.Abs(GamePatch.GameUpsFactor.Value - 1.0) < 0.001) return; GamePatch.EnableGameUpsFactor = false; UXAssist.Logger.LogInfo("Game UPS changing is disabled when using Auxilaryfunction's speed up feature"); } }