Make it actually work

This commit is contained in:
xen-42 2024-10-25 22:52:34 -04:00
parent 162237d3ad
commit c273b0d8cf
3 changed files with 34 additions and 32 deletions

View File

@ -138,8 +138,10 @@ namespace NewHorizons.Builder.Props
slideReel.SetSector(sector); slideReel.SetSector(sector);
slideReel.SetVisible(true); slideReel.SetVisible(true);
Component.DestroyImmediate(slideReelObj.GetComponent<SlideCollectionContainer>()); var toDestroy = slideReelObj.GetComponent<SlideCollectionContainer>();
var slideCollectionContainer = slideReelObj.AddComponent<NHSlideCollectionContainer>(); var slideCollectionContainer = slideReelObj.AddComponent<NHSlideCollectionContainer>();
slideReel._slideCollectionContainer = slideCollectionContainer;
Component.DestroyImmediate(toDestroy);
foreach (var renderer in slideReelObj.GetComponentsInChildren<Renderer>()) foreach (var renderer in slideReelObj.GetComponentsInChildren<Renderer>())
{ {
@ -344,8 +346,10 @@ namespace NewHorizons.Builder.Props
var autoProjector = projectorObj.GetComponent<AutoSlideProjector>(); var autoProjector = projectorObj.GetComponent<AutoSlideProjector>();
autoProjector._sector = sector; autoProjector._sector = sector;
Component.DestroyImmediate(autoProjector.GetComponent<SlideCollectionContainer>()); var toDestroy = autoProjector.GetComponent<SlideCollectionContainer>();
var slideCollectionContainer = autoProjector.gameObject.AddComponent<NHSlideCollectionContainer>(); var slideCollectionContainer = autoProjector.gameObject.AddComponent<NHSlideCollectionContainer>();
autoProjector._slideCollectionItem = slideCollectionContainer;
Component.DestroyImmediate(toDestroy);
// Now we replace the slides // Now we replace the slides
int slidesCount = info.slides.Length; int slidesCount = info.slides.Length;

View File

@ -8,6 +8,34 @@ public class NHSlideCollectionContainer : SlideCollectionContainer
public string[] conditionsToSet; public string[] conditionsToSet;
public string[] persistentConditionsToSet; 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) public static void SlideCollectionContainer_SetReadFlag(SlideCollectionContainer __instance)
{ {
if (__instance is NHSlideCollectionContainer container) if (__instance is NHSlideCollectionContainer container)

View File

@ -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;
}
}
}