From 35bcc74e3b540cab05a5b9a904e86d06c27b7e2f Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com> Date: Fri, 14 Oct 2022 14:00:04 -0500 Subject: [PATCH] small polish tweaks, update to melon 5.5 --- Blackout/BlackoutController.cs | 52 +++++++-------- Blackout/HarmonyPatches.cs | 1 + Blackout/Main.cs | 63 ++++++++++--------- Blackout/Properties/AssemblyInfo.cs | 2 +- Blackout/resources/blackout_controller.asset | Bin 13454 -> 13708 bytes 5 files changed, 60 insertions(+), 58 deletions(-) diff --git a/Blackout/BlackoutController.cs b/Blackout/BlackoutController.cs index 217c6b6..c3c1f2e 100644 --- a/Blackout/BlackoutController.cs +++ b/Blackout/BlackoutController.cs @@ -2,6 +2,7 @@ using ABI_RC.Core.Savior; using ABI_RC.Core.UI; using MelonLoader; +using System.Text; using UnityEngine; namespace Blackout; @@ -78,17 +79,17 @@ public class BlackoutController : MonoBehaviour case BlackoutState.Awake: blackoutAnimator.SetBool("BlackoutState.Drowsy", false); blackoutAnimator.SetBool("BlackoutState.Sleeping", false); - blackoutAnimator.SetFloat("BlackoutSetting.DrowsyPartial", DrowsyDimStrength); + blackoutAnimator.SetFloat("BlackoutSetting.DrowsyStrength", DrowsyDimStrength); break; case BlackoutState.Drowsy: blackoutAnimator.SetBool("BlackoutState.Drowsy", true); blackoutAnimator.SetBool("BlackoutState.Sleeping", false); - blackoutAnimator.SetFloat("BlackoutSetting.DrowsyPartial", DrowsyDimStrength); + blackoutAnimator.SetFloat("BlackoutSetting.DrowsyStrength", DrowsyDimStrength); break; case BlackoutState.Sleeping: blackoutAnimator.SetBool("BlackoutState.Drowsy", false); blackoutAnimator.SetBool("BlackoutState.Sleeping", true); - blackoutAnimator.SetFloat("BlackoutSetting.DrowsyPartial", DrowsyDimStrength); + blackoutAnimator.SetFloat("BlackoutSetting.DrowsyStrength", DrowsyDimStrength); break; default: break; @@ -99,6 +100,22 @@ public class BlackoutController : MonoBehaviour ChangeTargetFPS(); } + //initialize BlackoutInstance object + void Start() + { + Instance = this; + + GameObject blackoutAsset = AssetsHandler.GetAsset("Assets/BundledAssets/Blackout/Blackout.prefab"); + GameObject blackoutGO = Instantiate(blackoutAsset, new Vector3(0, 0, 0), Quaternion.identity); + + if (blackoutGO == null) return; + + blackoutGO.name = "BlackoutInstance"; + blackoutAnimator = blackoutGO.GetComponent(); + SetupBlackoutInstance(); + } + + //Automatic State Change void Update() { //only run once a second, angularMovement is "smoothed out" at high FPS otherwise @@ -127,28 +144,6 @@ public class BlackoutController : MonoBehaviour default: break; } - - //debug - //MelonLogger.Msg("curTime " + curTime); - //MelonLogger.Msg("lastAwakeTime " + lastAwakeTime); - //MelonLogger.Msg("timeleft " + GetNextStateTimer()); - //MelonLogger.Msg("current state " + CurrentState); - } - - //initialize BlackoutInstance object - void Start() - { - Instance = this; - - GameObject blackoutAsset = AssetsHandler.GetAsset("Assets/BundledAssets/Blackout/Blackout.prefab"); - GameObject blackoutGO = Instantiate(blackoutAsset, new Vector3(0, 0, 0), Quaternion.identity); - - if (blackoutGO != null) - { - blackoutGO.name = "BlackoutInstance"; - blackoutAnimator = blackoutGO.GetComponent(); - SetupBlackoutInstance(); - } } void OnEnable() @@ -190,7 +185,12 @@ public class BlackoutController : MonoBehaviour { MelonLogger.Msg(message); if (!CohtmlHud.Instance || !HudMessages) return; - CohtmlHud.Instance.ViewDropTextImmediate("Blackout", message, GetNextStateTimer().ToString() + " seconds till next state change."); + + StringBuilder secondmessage = new StringBuilder(); + if (enabled) + secondmessage = new StringBuilder(GetNextStateTimer().ToString() + " seconds till next state change."); + + CohtmlHud.Instance.ViewDropTextImmediate("Blackout", message, secondmessage.ToString()); } private void ChangeTargetFPS() diff --git a/Blackout/HarmonyPatches.cs b/Blackout/HarmonyPatches.cs index 4b35fb6..51f9793 100644 --- a/Blackout/HarmonyPatches.cs +++ b/Blackout/HarmonyPatches.cs @@ -14,6 +14,7 @@ internal class HarmonyPatches if (Blackout.inVR != PlayerSetup.Instance._inVr) { BlackoutController.Instance.SetupBlackoutInstance(); + BlackoutController.Instance.ChangeBlackoutState(BlackoutController.BlackoutState.Awake); } } } \ No newline at end of file diff --git a/Blackout/Main.cs b/Blackout/Main.cs index 065f1ae..03badb4 100644 --- a/Blackout/Main.cs +++ b/Blackout/Main.cs @@ -1,23 +1,21 @@ using ABI_RC.Core.Player; using MelonLoader; -using UnityEngine; namespace Blackout; public class Blackout : MelonMod { - public const string SettingsCategory = "Blackout"; - internal static bool inVR; - internal static MelonPreferences_Category m_categoryBlackout; - internal static MelonPreferences_Entry m_entryEnabled, m_entryHudMessages, m_entryDropFPSOnSleep; - //internal static MelonPreferences_Entry m_entryVROnly; - internal static MelonPreferences_Entry + internal const string SettingsCategory = "Blackout"; + + private static MelonPreferences_Category m_categoryBlackout; + private static MelonPreferences_Entry m_entryEnabled, m_entryHudMessages, m_entryDropFPSOnSleep; + private static MelonPreferences_Entry m_entryDrowsyThreshold, m_entryAwakeThreshold, m_entryDrowsyModeTimer, m_entrySleepModeTimer, m_entryDrowsyDimStrength; - public override void OnApplicationStart() + public override void OnInitializeMelon() { m_categoryBlackout = MelonPreferences.CreateCategory(nameof(Blackout)); m_entryEnabled = m_categoryBlackout.CreateEntry("Automatic State Change", true, description: "Dim screen when there is no movement for a while."); @@ -28,29 +26,25 @@ public class Blackout : MelonMod m_entryDrowsyModeTimer = m_categoryBlackout.CreateEntry("Enter Drowsy Time", 3f, description: "How many minutes without movement until enter drowsy mode."); m_entrySleepModeTimer = m_categoryBlackout.CreateEntry("Enter Sleep Time", 10f, description: "How many seconds without movement until enter sleep mode."); m_entryDrowsyDimStrength = m_categoryBlackout.CreateEntry("Drowsy Dim Strength", 0.5f, description: "How strong of a dimming effect should drowsy mode have."); - //m_entryVROnly = m_categoryBlackout.CreateEntry("VR Only", false, description: "Only enable mod in VR."); m_categoryBlackout.SaveToFile(false); - //please tell me a better way to do this - //this is fucking - //gross pleas etell me how to do this but not like this - m_entryEnabled.OnValueChangedUntyped += OnEnabled; - m_entryHudMessages.OnValueChangedUntyped += OnUpdateSettings; - m_entryDropFPSOnSleep.OnValueChangedUntyped += OnUpdateSettings; - m_entryDrowsyThreshold.OnValueChangedUntyped += OnUpdateSettings; - m_entryAwakeThreshold.OnValueChangedUntyped += OnUpdateSettings; - m_entryDrowsyModeTimer.OnValueChangedUntyped += OnUpdateSettings; - m_entrySleepModeTimer.OnValueChangedUntyped += OnUpdateSettings; - m_entryDrowsyDimStrength.OnValueChangedUntyped += OnUpdateSettings; - //m_entryVROnly.OnValueChangedUntyped += OnUpdateSettings; - MelonLoader.MelonCoroutines.Start(WaitForLocalPlayer()); + m_entryEnabled.OnEntryValueChangedUntyped.Subscribe(OnUpdateEnabled); + m_entryHudMessages.OnEntryValueChangedUntyped.Subscribe(OnUpdateSettings); + m_entryDropFPSOnSleep.OnEntryValueChangedUntyped.Subscribe(OnUpdateSettings); + m_entryDrowsyThreshold.OnEntryValueChangedUntyped.Subscribe(OnUpdateSettings); + m_entryAwakeThreshold.OnEntryValueChangedUntyped.Subscribe(OnUpdateSettings); + m_entryDrowsyModeTimer.OnEntryValueChangedUntyped.Subscribe(OnUpdateSettings); + m_entrySleepModeTimer.OnEntryValueChangedUntyped.Subscribe(OnUpdateSettings); + m_entryDrowsyDimStrength.OnEntryValueChangedUntyped.Subscribe(OnUpdateSettings); //UIExpansionKit addon - if (MelonHandler.Mods.Any(it => it.Info.Name == "UI Expansion Kit")) + if (MelonMod.RegisteredMelons.Any(it => it.Info.Name == "UI Expansion Kit")) { MelonLogger.Msg("Initializing UIExpansionKit support."); UiExtensionsAddon.Init(); } + + MelonLoader.MelonCoroutines.Start(WaitForLocalPlayer()); } System.Collections.IEnumerator WaitForLocalPlayer() @@ -65,8 +59,10 @@ public class Blackout : MelonMod PlayerSetup.Instance.gameObject.AddComponent(); //update BlackoutController settings after it initializes - yield return new WaitForEndOfFrame(); - OnUpdateSettings(); + while (BlackoutController.Instance == null) + yield return null; + + UpdateAllSettings(); } private void OnEnabled() @@ -74,20 +70,25 @@ public class Blackout : MelonMod if (!BlackoutController.Instance) return; BlackoutController.Instance.enabled = m_entryEnabled.Value; } - private void OnUpdateSettings() + + private void UpdateAllSettings() { if (!BlackoutController.Instance) return; + BlackoutController.Instance.enabled = m_entryEnabled.Value; + BlackoutController.Instance.HudMessages = m_entryHudMessages.Value; + BlackoutController.Instance.DropFPSOnSleep = m_entryDropFPSOnSleep.Value; BlackoutController.Instance.drowsyThreshold = m_entryDrowsyThreshold.Value; BlackoutController.Instance.wakeThreshold = m_entryAwakeThreshold.Value; BlackoutController.Instance.DrowsyModeTimer = m_entryDrowsyModeTimer.Value; BlackoutController.Instance.SleepModeTimer = m_entrySleepModeTimer.Value; BlackoutController.Instance.DrowsyDimStrength = m_entryDrowsyDimStrength.Value; - BlackoutController.Instance.HudMessages = m_entryHudMessages.Value; - BlackoutController.Instance.DropFPSOnSleep = m_entryDropFPSOnSleep.Value; } + private void OnUpdateEnabled(object arg1, object arg2) => OnEnabled(); + private void OnUpdateSettings(object arg1, object arg2) => UpdateAllSettings(); + //UIExpansionKit actions - public static void AwakeState() => BlackoutController.Instance.ChangeBlackoutState(BlackoutController.BlackoutState.Awake); - public static void DrowsyState() => BlackoutController.Instance.ChangeBlackoutState(BlackoutController.BlackoutState.Drowsy); - public static void SleepingState() => BlackoutController.Instance.ChangeBlackoutState(BlackoutController.BlackoutState.Sleeping); + internal static void AwakeState() => BlackoutController.Instance.ChangeBlackoutState(BlackoutController.BlackoutState.Awake); + internal static void DrowsyState() => BlackoutController.Instance.ChangeBlackoutState(BlackoutController.BlackoutState.Drowsy); + internal static void SleepingState() => BlackoutController.Instance.ChangeBlackoutState(BlackoutController.BlackoutState.Sleeping); } \ No newline at end of file diff --git a/Blackout/Properties/AssemblyInfo.cs b/Blackout/Properties/AssemblyInfo.cs index 728d4a7..a30c5c7 100644 --- a/Blackout/Properties/AssemblyInfo.cs +++ b/Blackout/Properties/AssemblyInfo.cs @@ -25,6 +25,6 @@ using System.Reflection; namespace Blackout.Properties; internal static class AssemblyInfoParams { - public const string Version = "1.0.0"; + public const string Version = "1.0.1"; public const string Author = "NotAKidoS"; } \ No newline at end of file diff --git a/Blackout/resources/blackout_controller.asset b/Blackout/resources/blackout_controller.asset index 52e58cc994c225d484455efb230d12097c265d96..8c44df3f5bcd19e8f08b8d5010d7e89ee04057fc 100644 GIT binary patch delta 13699 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 delta 13443 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