From ea1e0da1ce4f1c7bb4d4a94ec3f8331e0a71e407 Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com> Date: Fri, 17 Mar 2023 00:13:46 -0500 Subject: [PATCH] braindead --- FuckMetrics/FuckMetrics.cs | 120 +++++++++++++++++----------------- FuckMetrics/HarmonyPatches.cs | 95 +++++++++++++-------------- 2 files changed, 107 insertions(+), 108 deletions(-) diff --git a/FuckMetrics/FuckMetrics.cs b/FuckMetrics/FuckMetrics.cs index bb42b26..c6010d3 100644 --- a/FuckMetrics/FuckMetrics.cs +++ b/FuckMetrics/FuckMetrics.cs @@ -4,87 +4,87 @@ using cohtml; using HarmonyLib; using UnityEngine; -namespace NAK.Melons.FuckMetrics +namespace NAK.Melons.FuckMetrics; + +public static class FuckMetrics { - public static class FuckMetrics + public enum SettingState { - public enum SettingState + Always, + MenuOnly, + Disabled + } + + public static void ToggleMetrics(bool enable) + { + var job = SchedulerSystem.Instance.activeJobs.FirstOrDefault(pair => pair.Job.Method.Name == "UpdateMetrics").Job; + if (enable && job == null) { - Always, - MenuOnly, - Disabled + SchedulerSystem.AddJob(new SchedulerSystem.Job(ViewManager.Instance.UpdateMetrics), 0f, FuckMetricsMod.EntryMetricsUpdateRate.Value, -1); } - - public static void ToggleMetrics(bool enable) + else if (!enable && job != null) { - var job = SchedulerSystem.Instance.activeJobs.FirstOrDefault(pair => pair.Job.Method.Name == "UpdateMetrics").Job; - if (enable && job == null) - { - SchedulerSystem.AddJob(new SchedulerSystem.Job(ViewManager.Instance.UpdateMetrics), 0f, FuckMetricsMod.EntryMetricsUpdateRate.Value, -1); - } - else if (!enable && job != null) - { - SchedulerSystem.RemoveJob(job); - } + SchedulerSystem.RemoveJob(job); } + } - public static void ToggleCoreUpdates(bool enable) + public static void ToggleCoreUpdates(bool enable) + { + var job = SchedulerSystem.Instance.activeJobs.FirstOrDefault(pair => pair.Job.Method.Name == "SendCoreUpdate").Job; + if (enable && job == null) { - var job = SchedulerSystem.Instance.activeJobs.FirstOrDefault(pair => pair.Job.Method.Name == "SendCoreUpdate").Job; - if (enable && job == null) - { - SchedulerSystem.AddJob(new SchedulerSystem.Job(CVR_MenuManager.Instance.SendCoreUpdate), 0f, FuckMetricsMod.EntryCoreUpdateRate.Value, -1); - } - else if (!enable && job != null) - { - SchedulerSystem.RemoveJob(job); - } + SchedulerSystem.AddJob(new SchedulerSystem.Job(CVR_MenuManager.Instance.SendCoreUpdate), 0f, FuckMetricsMod.EntryCoreUpdateRate.Value, -1); } - - public static void ApplyMetricsSettings(bool show) + else if (!enable && job != null) { - var disableMetrics = FuckMetricsMod.EntryDisableMetrics.Value; - if (disableMetrics == FuckMetrics.SettingState.Always) return; - - if (disableMetrics == FuckMetrics.SettingState.MenuOnly) - { - FuckMetrics.ToggleMetrics(show); - } - else if (disableMetrics == FuckMetrics.SettingState.Disabled && show) - { - ViewManager.Instance.UpdateMetrics(); - } + SchedulerSystem.RemoveJob(job); } + } - public static void ApplyCoreUpdatesSettings(bool show) + public static void ApplyMetricsSettings(bool show) + { + var disableMetrics = FuckMetricsMod.EntryDisableMetrics.Value; + if (disableMetrics == FuckMetrics.SettingState.Always) return; + + if (disableMetrics == FuckMetrics.SettingState.MenuOnly) { - var disableCoreUpdates = FuckMetricsMod.EntryDisableCoreUpdates.Value; - if (disableCoreUpdates == FuckMetrics.SettingState.Always) return; - - if (disableCoreUpdates == FuckMetrics.SettingState.MenuOnly) - { - FuckMetrics.ToggleCoreUpdates(show); - } - else if (disableCoreUpdates == FuckMetrics.SettingState.Disabled && show) - { - CVR_MenuManager.Instance.SendCoreUpdate(); - } + FuckMetrics.ToggleMetrics(show); } - - public static void CohtmlAdvanceView(CohtmlView cohtmlView, Traverse menuOpenTraverse) + else if (disableMetrics == FuckMetrics.SettingState.Disabled && show) { - if (!FuckMetricsMod.EntryDisableCohtmlViewOnIdle.Value) return; + ViewManager.Instance.UpdateMetrics(); + } + } - // Don't execute if menu is open - if (cohtmlView == null || menuOpenTraverse.GetValue()) return; + public static void ApplyCoreUpdatesSettings(bool show) + { + var disableCoreUpdates = FuckMetricsMod.EntryDisableCoreUpdates.Value; + if (disableCoreUpdates == FuckMetrics.SettingState.Always) return; - // Disable cohtmlView (opening should enable) + if (disableCoreUpdates == FuckMetrics.SettingState.MenuOnly) + { + FuckMetrics.ToggleCoreUpdates(show); + } + else if (disableCoreUpdates == FuckMetrics.SettingState.Disabled && show) + { + CVR_MenuManager.Instance.SendCoreUpdate(); + } + } + + public static void CohtmlAdvanceView(CohtmlView cohtmlView, Traverse menuOpenTraverse) + { + if (!FuckMetricsMod.EntryDisableCohtmlViewOnIdle.Value) return; + + FuckMetricsMod.Logger.Msg(cohtmlView != null && !menuOpenTraverse.GetValue()); + FuckMetricsMod.Logger.Msg(menuOpenTraverse.GetValue()); + + if (cohtmlView != null && !menuOpenTraverse.GetValue()) + { cohtmlView.enabled = false; - // Death try { - if (cohtmlView.m_UISystem != null) cohtmlView.View.Advance(cohtmlView.m_UISystem.Id, (double)Time.unscaledTime * 1000.0); + cohtmlView.View.Advance(cohtmlView.m_UISystem?.Id ?? 0, (double)Time.unscaledTime * 1000.0); } catch (Exception e) { diff --git a/FuckMetrics/HarmonyPatches.cs b/FuckMetrics/HarmonyPatches.cs index 742c433..476ee5b 100644 --- a/FuckMetrics/HarmonyPatches.cs +++ b/FuckMetrics/HarmonyPatches.cs @@ -3,63 +3,62 @@ using ABI_RC.Core.IO; using cohtml; using HarmonyLib; -namespace NAK.Melons.FuckMetrics.HarmonyPatches +namespace NAK.Melons.FuckMetrics.HarmonyPatches; + +public static class CVR_MenuManagerPatches { - public static class CVR_MenuManagerPatches + [HarmonyPostfix] + [HarmonyPatch(typeof(CVR_MenuManager), "ToggleQuickMenu", new Type[] { typeof(bool) })] + private static void Postfix_CVR_MenuManager_ToggleQuickMenu(bool show) { - [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); - } + 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 CVR_MenuManager __instance, ref CohtmlView ___quickMenu) + { + _quickMenuView = ___quickMenu; + _quickMenuOpenTraverse = Traverse.Create(__instance).Field("_quickMenuOpen"); + SchedulerSystem.AddJob(() => FuckMetrics.CohtmlAdvanceView(_quickMenuView, _quickMenuOpenTraverse), 15f, 6f, -1); } - public static class ViewManagerPatches + [HarmonyPostfix] + [HarmonyPatch(typeof(ViewManager), "Start")] + private static void Postfix_ViewManager_Start(ref ViewManager __instance, ref CohtmlView ___gameMenuView) { - [HarmonyPostfix] - [HarmonyPatch(typeof(ViewManager), "UiStateToggle", new Type[] { typeof(bool) })] - private static void Postfix_ViewManager_UiStateToggle(bool show) - { - FuckMetrics.ApplyMetricsSettings(show); - FuckMetrics.ApplyCoreUpdatesSettings(show); - } + _gameMenuView = ___gameMenuView; + _gameMenuOpenTraverse = Traverse.Create(__instance).Field("_gameMenuOpen"); + SchedulerSystem.AddJob(() => FuckMetrics.CohtmlAdvanceView(_gameMenuView, _gameMenuOpenTraverse), 12f, 6f, -1); } - public static class CohtmlViewPatches + [HarmonyPostfix] + [HarmonyPatch(typeof(ViewManager), "OnMicrophoneStatusSwitched")] + private static void Postfix_ViewManager_OnMicrophoneStatusSwitched() { - 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) + if (_quickMenuOpenTraverse.GetValue()) { - _quickMenuView = ___quickMenu; - _quickMenuOpenTraverse = Traverse.Create().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().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()) - { - CVR_MenuManager.Instance.SendCoreUpdate(); - } + CVR_MenuManager.Instance.SendCoreUpdate(); } } }