Fix inactive signals being used with signalscope strongest signal method

This commit is contained in:
Noah Pilarski 2024-07-02 18:40:46 -04:00
parent 9e00c229c7
commit f313e14ffa
2 changed files with 16 additions and 0 deletions

View File

@ -1,4 +1,6 @@
using HarmonyLib; using HarmonyLib;
using System.Collections.Generic;
using System.Linq;
namespace NewHorizons.Patches namespace NewHorizons.Patches
{ {
@ -108,5 +110,12 @@ namespace NewHorizons.Patches
_mapSatellite = null; _mapSatellite = null;
_sunStation = null; _sunStation = null;
} }
[HarmonyPostfix]
[HarmonyPatch(nameof(Locator.GetAudioSignals))]
public static void Locator_GetAudioSignals(ref List<AudioSignal> __result)
{
__result = __result.Where(signal => signal.IsActive()).ToList();
}
} }
} }

View File

@ -11,6 +11,13 @@ namespace NewHorizons.Patches.SignalPatches
[HarmonyPatch(typeof(AudioSignal))] [HarmonyPatch(typeof(AudioSignal))]
public static class AudioSignalPatches public static class AudioSignalPatches
{ {
[HarmonyPostfix]
[HarmonyPatch(nameof(AudioSignal.IsActive))]
public static void AudioSignal_IsActive(AudioSignal __instance, ref bool __result)
{
__result = __result && __instance.gameObject.activeInHierarchy;
}
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(nameof(AudioSignal.SignalNameToString))] [HarmonyPatch(nameof(AudioSignal.SignalNameToString))]
public static bool AudioSignal_SignalNameToString(SignalName name, ref string __result) public static bool AudioSignal_SignalNameToString(SignalName name, ref string __result)