From c273b0d8cf94be96fa40943f20917b2da9636ab4 Mon Sep 17 00:00:00 2001 From: xen-42 Date: Fri, 25 Oct 2024 22:52:34 -0400 Subject: [PATCH] Make it actually work --- .../Builder/Props/ProjectionBuilder.cs | 8 +++-- .../EOTE/NHSlideCollectionContainer.cs | 28 +++++++++++++++++ .../SlideCollectionContainerPatches.cs | 30 ------------------- 3 files changed, 34 insertions(+), 32 deletions(-) delete mode 100644 NewHorizons/Patches/ShipLogPatches/SlideCollectionContainerPatches.cs diff --git a/NewHorizons/Builder/Props/ProjectionBuilder.cs b/NewHorizons/Builder/Props/ProjectionBuilder.cs index 642c3236..1a406d2b 100644 --- a/NewHorizons/Builder/Props/ProjectionBuilder.cs +++ b/NewHorizons/Builder/Props/ProjectionBuilder.cs @@ -138,8 +138,10 @@ namespace NewHorizons.Builder.Props slideReel.SetSector(sector); slideReel.SetVisible(true); - Component.DestroyImmediate(slideReelObj.GetComponent()); + var toDestroy = slideReelObj.GetComponent(); var slideCollectionContainer = slideReelObj.AddComponent(); + slideReel._slideCollectionContainer = slideCollectionContainer; + Component.DestroyImmediate(toDestroy); foreach (var renderer in slideReelObj.GetComponentsInChildren()) { @@ -344,8 +346,10 @@ namespace NewHorizons.Builder.Props var autoProjector = projectorObj.GetComponent(); autoProjector._sector = sector; - Component.DestroyImmediate(autoProjector.GetComponent()); + var toDestroy = autoProjector.GetComponent(); var slideCollectionContainer = autoProjector.gameObject.AddComponent(); + autoProjector._slideCollectionItem = slideCollectionContainer; + Component.DestroyImmediate(toDestroy); // Now we replace the slides int slidesCount = info.slides.Length; diff --git a/NewHorizons/Components/EOTE/NHSlideCollectionContainer.cs b/NewHorizons/Components/EOTE/NHSlideCollectionContainer.cs index d6a5bb7c..bcf979ec 100644 --- a/NewHorizons/Components/EOTE/NHSlideCollectionContainer.cs +++ b/NewHorizons/Components/EOTE/NHSlideCollectionContainer.cs @@ -8,6 +8,34 @@ public class NHSlideCollectionContainer : SlideCollectionContainer public string[] conditionsToSet; public string[] persistentConditionsToSet; + [HarmonyPrefix] + [HarmonyPatch(typeof(SlideCollectionContainer), nameof(SlideCollectionContainer.Initialize))] + public static bool SlideCollectionContainer_Initialize(SlideCollectionContainer __instance) + { + if (__instance is NHSlideCollectionContainer) + { + if (__instance._initialized) + return false; + __instance.SetupReadFlags(); + __instance.RegisterPerSlideCompletion(); + if (__instance.streamingTexturesAvailable) + __instance.SetupStreaming(); + __instance.BuildMusicRangesIndex(); + __instance._changeSlidesAllowed = true; + __instance._initialized = true; + __instance._slideCollection.isVision = __instance._owningItem == null; + foreach (var factID in __instance._playWithShipLogFacts) + { + var fact = Locator.GetShipLogManager().GetFact(factID); + fact?.RegisterSlideCollection(__instance._slideCollection); + } + return false; + } + return true; + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(SlideCollectionContainer), nameof(SlideCollectionContainer.SetReadFlag))] public static void SlideCollectionContainer_SetReadFlag(SlideCollectionContainer __instance) { if (__instance is NHSlideCollectionContainer container) diff --git a/NewHorizons/Patches/ShipLogPatches/SlideCollectionContainerPatches.cs b/NewHorizons/Patches/ShipLogPatches/SlideCollectionContainerPatches.cs deleted file mode 100644 index d3c4cae7..00000000 --- a/NewHorizons/Patches/ShipLogPatches/SlideCollectionContainerPatches.cs +++ /dev/null @@ -1,30 +0,0 @@ -using HarmonyLib; - -namespace NewHorizons.Patches.ShipLogPatches -{ - [HarmonyPatch(typeof(SlideCollectionContainer))] - public static class SlideCollectionContainerPatches - { - [HarmonyPrefix] - [HarmonyPatch(typeof(SlideCollectionContainer), nameof(SlideCollectionContainer.Initialize))] - public static bool SlideCollectionContainer_Initialize(SlideCollectionContainer __instance) - { - if (__instance._initialized) - return false; - __instance.SetupReadFlags(); - __instance.RegisterPerSlideCompletion(); - if (__instance.streamingTexturesAvailable) - __instance.SetupStreaming(); - __instance.BuildMusicRangesIndex(); - __instance._changeSlidesAllowed = true; - __instance._initialized = true; - __instance._slideCollection.isVision = __instance._owningItem == null; - foreach (var factID in __instance._playWithShipLogFacts) - { - var fact = Locator.GetShipLogManager().GetFact(factID); - fact?.RegisterSlideCollection(__instance._slideCollection); - } - return false; - } - } -} \ No newline at end of file