new-horizons/NewHorizons/Patches/EchoesOfTheEyePatches/MindSlideProjectionPatches.cs
2023-03-18 13:30:22 -04:00

36 lines
1.5 KiB
C#

using HarmonyLib;
namespace NewHorizons.Patches.EchoesOfTheEyePatches
{
[HarmonyPatch(typeof(MindSlideProjector))]
public static class MindSlideProjectionPatches
{
[HarmonyPrefix]
[HarmonyPatch(typeof(MindSlideProjector), nameof(MindSlideProjector.SetMindSlideCollection))]
private static bool MindSlideProjector_SetMindSlideCollection(MindSlideProjector __instance, MindSlideCollection mindSlideCollection)
{
if (mindSlideCollection == null) return false;
if (__instance._mindSlideCollection == mindSlideCollection) return false;
// Original method didn't check if old _slideCollectionItem was null.
if (__instance._slideCollectionItem != null)
{
__instance._slideCollectionItem.onSlideTextureUpdated -= __instance.OnSlideTextureUpdated;
__instance._slideCollectionItem.onPlayBeatAudio -= __instance.OnPlayBeatAudio;
}
__instance._mindSlideCollection = mindSlideCollection;
__instance._defaultSlideDuration = mindSlideCollection.defaultSlideDuration;
__instance._slideCollectionItem = mindSlideCollection.slideCollectionContainer;
__instance._slideCollectionItem.onSlideTextureUpdated += __instance.OnSlideTextureUpdated;
__instance._slideCollectionItem.onPlayBeatAudio += __instance.OnPlayBeatAudio;
__instance._slideCollectionItem.Initialize();
__instance._slideCollectionItem.enabled = false;
return false;
}
}
}