From fb3dc0068ac3e89165854d5fb348462ff5dd9bf1 Mon Sep 17 00:00:00 2001 From: DeathWeasel1337 Date: Wed, 9 Jan 2019 12:28:28 -0600 Subject: [PATCH] Fix for Singleton not working for some people --- KK_Subtitles/KK_Subtitles.cs | 9 +++++++-- KK_Subtitles/KK_Subtitles_Caption.cs | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/KK_Subtitles/KK_Subtitles.cs b/KK_Subtitles/KK_Subtitles.cs index 990dea65..8210980a 100644 --- a/KK_Subtitles/KK_Subtitles.cs +++ b/KK_Subtitles/KK_Subtitles.cs @@ -18,6 +18,7 @@ public class KK_Subtitles : BaseUnityPlugin public const string GUID = "com.deathweasel.bepinex.subtitles"; public const string Version = "1.0"; internal static Info ActionGameInfoInstance; + internal static HSceneProc HSceneProcInstance; public static bool WasTouched = false; #region ConfigMgr @@ -102,7 +103,7 @@ public static void PlayVoice(LoadVoice __instance) if (__instance.audioSource == null || __instance.audioSource.clip == null || __instance.audioSource.loop) return; - if (Singleton.IsInstance()) + if (HSceneProcInstance != null) Caption.DisplayHSubtitle(__instance); else if (ActionGameInfoInstance != null && WasTouched) Caption.DisplayDialogueSubtitle(__instance); @@ -124,7 +125,11 @@ public static void InfoInit(Info __instance) [HarmonyPostfix] [HarmonyPatch(typeof(HVoiceCtrl), "Init")] - public static void HVoiceCtrlInit() => Caption.InitGUI(); + public static void HVoiceCtrlInit() + { + Caption.InitGUI(); + HSceneProcInstance = FindObjectOfType(); + } } } diff --git a/KK_Subtitles/KK_Subtitles_Caption.cs b/KK_Subtitles/KK_Subtitles_Caption.cs index 936720bd..a0727f08 100644 --- a/KK_Subtitles/KK_Subtitles_Caption.cs +++ b/KK_Subtitles/KK_Subtitles_Caption.cs @@ -71,8 +71,8 @@ void FindText() internal static void DisplayHSubtitle(LoadVoice voice) { - List lstProc = (List)AccessTools.Field(typeof(HSceneProc), "lstProc").GetValue(Singleton.Instance); - HActionBase mode = lstProc[(int)Singleton.Instance.flags.mode]; + List lstProc = (List)AccessTools.Field(typeof(HSceneProc), "lstProc").GetValue(KK_Subtitles.HSceneProcInstance); + HActionBase mode = lstProc[(int)KK_Subtitles.HSceneProcInstance.flags.mode]; HVoiceCtrl voicectrl = (HVoiceCtrl)AccessTools.Field(typeof(HActionBase), "voice").GetValue(mode); //At the start of the H scene, all the text was loaded. Look through the loaded stuff and find the text for the current spoken voice.