NAK_CVR_Mods/FuckMetrics/HarmonyPatches.cs
NotAKidoS 453d8023c1 what
2023-03-16 23:59:10 -05:00

65 lines
2.4 KiB
C#

using ABI_RC.Core.InteractionSystem;
using ABI_RC.Core.IO;
using cohtml;
using HarmonyLib;
namespace NAK.Melons.FuckMetrics.HarmonyPatches
{
public static class CVR_MenuManagerPatches
{
[HarmonyPostfix]
[HarmonyPatch(typeof(CVR_MenuManager), "ToggleQuickMenu", new Type[] { typeof(bool) })]
private static void Postfix_CVR_MenuManager_ToggleQuickMenu(bool show)
{
FuckMetrics.ApplyMetricsSettings(show);
FuckMetrics.ApplyCoreUpdatesSettings(show);
}
}
public static class ViewManagerPatches
{
[HarmonyPostfix]
[HarmonyPatch(typeof(ViewManager), "UiStateToggle", new Type[] { typeof(bool) })]
private static void Postfix_ViewManager_UiStateToggle(bool show)
{
FuckMetrics.ApplyMetricsSettings(show);
FuckMetrics.ApplyCoreUpdatesSettings(show);
}
}
public static class CohtmlViewPatches
{
private static CohtmlView _quickMenuView;
private static CohtmlView _gameMenuView;
private static Traverse _quickMenuOpenTraverse;
private static Traverse _gameMenuOpenTraverse;
[HarmonyPostfix]
[HarmonyPatch(typeof(CVR_MenuManager), "Start")]
private static void Postfix_CVRMenuManager_Start(ref CohtmlView ___quickMenu)
{
_quickMenuView = ___quickMenu;
_quickMenuOpenTraverse = Traverse.Create<CVR_MenuManager>().Field("_quickMenuOpen");
SchedulerSystem.AddJob(() => FuckMetrics.CohtmlAdvanceView(_quickMenuView, _quickMenuOpenTraverse), 15f, 6f, -1);
}
[HarmonyPostfix]
[HarmonyPatch(typeof(ViewManager), "Start")]
private static void Postfix_ViewManager_Start(ref CohtmlView ___gameMenuView)
{
_gameMenuView = ___gameMenuView;
_gameMenuOpenTraverse = Traverse.Create<ViewManager>().Field("_gameMenuOpen");
SchedulerSystem.AddJob(() => FuckMetrics.CohtmlAdvanceView(_gameMenuView, _gameMenuOpenTraverse), 12f, 6f, -1);
}
[HarmonyPostfix]
[HarmonyPatch(typeof(ViewManager), "OnMicrophoneStatusSwitched")]
private static void Postfix_ViewManager_OnMicrophoneStatusSwitched()
{
if (_quickMenuOpenTraverse.GetValue<bool>())
{
CVR_MenuManager.Instance.SendCoreUpdate();
}
}
}
}