mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
43 lines
1.8 KiB
C#
43 lines
1.8 KiB
C#
using HarmonyLib;
|
|
using NewHorizons.Builder.Props.Audio;
|
|
using NewHorizons.Utility.OWML;
|
|
|
|
namespace NewHorizons.Patches.SignalPatches
|
|
{
|
|
[HarmonyPatch(typeof(Signalscope))]
|
|
public static class SignalScopePatches
|
|
{
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(nameof(Signalscope.Awake))]
|
|
public static void Signalscope_Awake(Signalscope __instance)
|
|
{
|
|
__instance._strongestSignals = new AudioSignal[32];
|
|
}
|
|
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(nameof(Signalscope.SwitchFrequencyFilter))]
|
|
public static bool Signalscope_SwitchFrequencyFilter(Signalscope __instance, int increment)
|
|
{
|
|
var count = SignalBuilder.NumberOfFrequencies;
|
|
__instance._frequencyFilterIndex += increment;
|
|
// Base game does 1 here but we use frequency index 0 as "default" or "???"
|
|
__instance._frequencyFilterIndex = __instance._frequencyFilterIndex >= count ? 0 : __instance._frequencyFilterIndex;
|
|
__instance._frequencyFilterIndex = __instance._frequencyFilterIndex < 0 ? count - 1 : __instance._frequencyFilterIndex;
|
|
var signalFrequency = AudioSignal.IndexToFrequency(__instance._frequencyFilterIndex);
|
|
|
|
NHLogger.Log($"Changed freq to {signalFrequency} at {__instance._frequencyFilterIndex}");
|
|
|
|
// Skip over this frequency
|
|
// Never skip traveler (always known)
|
|
var isTraveler = __instance._frequencyFilterIndex == 1;
|
|
var isUnknown = !PlayerData.KnowsFrequency(signalFrequency) && (!__instance._isUnknownFreqNearby || __instance._unknownFrequency != signalFrequency);
|
|
if (!isTraveler && (isUnknown || !SignalBuilder.IsFrequencyInUse(signalFrequency)))
|
|
{
|
|
__instance.SwitchFrequencyFilter(increment);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|