From e1366ed1e40de236de2d51878c81a9637c712bad Mon Sep 17 00:00:00 2001 From: Osmodium Date: Tue, 20 Feb 2024 21:37:39 +0100 Subject: [PATCH] Fix playback button in dialog --- ...tPCView_Patch.cs => DialogPCView_Patch.cs} | 44 ++++++++----------- 1 file changed, 19 insertions(+), 25 deletions(-) rename SpeechMod/Patches/{SurfaceStaticPartPCView_Patch.cs => DialogPCView_Patch.cs} (54%) diff --git a/SpeechMod/Patches/SurfaceStaticPartPCView_Patch.cs b/SpeechMod/Patches/DialogPCView_Patch.cs similarity index 54% rename from SpeechMod/Patches/SurfaceStaticPartPCView_Patch.cs rename to SpeechMod/Patches/DialogPCView_Patch.cs index 9e99ebd..2750b54 100644 --- a/SpeechMod/Patches/SurfaceStaticPartPCView_Patch.cs +++ b/SpeechMod/Patches/DialogPCView_Patch.cs @@ -1,7 +1,8 @@ using HarmonyLib; using Kingmaker; -using Kingmaker.Code.UI.MVVM.View.Space.PC; -using Kingmaker.Code.UI.MVVM.View.Surface.PC; +using Kingmaker.Code.UI.MVVM.View.Dialog.Dialog; +using Kingmaker.Code.UI.MVVM.View.Dialog.SurfaceDialog; +using Kingmaker.GameModes; using SpeechMod.Unity; using SpeechMod.Unity.Extensions; using UnityEngine; @@ -9,12 +10,13 @@ namespace SpeechMod.Patches; [HarmonyPatch] -public static class SurfaceStaticPartPCView_Patch +public static class DialogPCView_Patch { - private const string SURFACE_SCROLL_VIEW_PATH = "/SurfacePCView(Clone)/SurfaceStaticPartPCView/StaticCanvas/SurfaceDialogPCView/LeftSide/CueAndHistoryPlace/ScrollView"; - private const string SPACE_SCROLL_VIEW_PATH = "/SpacePCView(Clone)/SpaceStaticPartPCView/StaticCanvas/SurfaceDialogPCView/LeftSide/CueAndHistoryPlace/ScrollView"; + private const string SPEECHMOD_DIALOGBUTTON_NAME = "SpeechMod_DialogButton"; + private const string SURFACE_SCROLL_VIEW_PATH = "/SurfacePCView(Clone)/SurfaceStaticPartPCView/StaticCanvas/SurfaceDialogPCView(Clone)/LeftSide/CueAndHistoryPlace/ScrollView"; + private const string SPACE_SCROLL_VIEW_PATH = "/SpacePCView(Clone)/SpaceStaticPartPCView/StaticCanvas/SurfaceDialogPCView(Clone)/LeftSide/CueAndHistoryPlace/ScrollView"; - [HarmonyPatch(typeof(SurfaceStaticPartPCView), "Initialize")] + [HarmonyPatch(typeof(SurfaceDialogBaseView), "Initialize")] [HarmonyPostfix] public static void AddSurfaceDialogButton() { @@ -23,25 +25,10 @@ public static void AddSurfaceDialogButton() #if DEBUG var sceneName = Game.Instance!.CurrentlyLoadedArea!.ActiveUIScene!.SceneName; - Debug.Log($"{nameof(SurfaceStaticPartPCView)}_Initialize_Postfix @ {sceneName}"); + Debug.Log($"{nameof(SurfaceDialogBaseView)}_Initialize_Postfix @ {sceneName}"); #endif - AddDialogSpeechButton(SURFACE_SCROLL_VIEW_PATH); - } - - [HarmonyPatch(typeof(SpaceStaticPartPCView), "Initialize")] - [HarmonyPostfix] - public static void AddSpaceDialogButton() - { - if (!Main.Enabled) - return; - -#if DEBUG - var sceneName = Game.Instance!.CurrentlyLoadedArea!.ActiveUIScene!.SceneName; - Debug.Log($"{nameof(SpaceStaticPartPCView)}_Initialize_Postfix @ {sceneName}"); -#endif - - AddDialogSpeechButton(SPACE_SCROLL_VIEW_PATH); + AddDialogSpeechButton(Game.Instance!.IsModeActive(GameModeType.StarSystem) ? SPACE_SCROLL_VIEW_PATH : SURFACE_SCROLL_VIEW_PATH); } private static void AddDialogSpeechButton(string path) @@ -59,9 +46,16 @@ private static void AddDialogSpeechButton(string path) return; } + + if (parent.TryFind(SPEECHMOD_DIALOGBUTTON_NAME) != null) + { + Debug.LogWarning("Button already exists!"); + return; + } + var buttonGameObject = ButtonFactory.TryCreatePlayButton(parent, () => { - Main.Speech.SpeakDialog(Game.Instance?.DialogController?.CurrentCue?.DisplayText); + Main.Speech?.SpeakDialog(Game.Instance?.DialogController?.CurrentCue?.DisplayText); }); if (buttonGameObject == null) @@ -69,7 +63,7 @@ private static void AddDialogSpeechButton(string path) return; } - buttonGameObject.name = "SpeechMod_DialogButton"; + buttonGameObject.name = SPEECHMOD_DIALOGBUTTON_NAME; buttonGameObject.RectAlignTopLeft(new Vector2(40, 10)); buttonGameObject.transform.localRotation = Quaternion.Euler(0, 0, 270);