Skipping unused frequencies works fine

This commit is contained in:
Nick 2023-07-01 19:55:23 -04:00
parent 4dfc8fa109
commit efdcf47b25
2 changed files with 6 additions and 9 deletions

View File

@ -6,8 +6,6 @@ using OWML.Utils;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using NewHorizons.External.Modules.Props.Audio;
using System.Linq;
namespace NewHorizons.Builder.Props.Audio namespace NewHorizons.Builder.Props.Audio
{ {

View File

@ -1,6 +1,5 @@
using HarmonyLib; using HarmonyLib;
using NewHorizons.Builder.Props.Audio; using NewHorizons.Builder.Props.Audio;
using UnityEngine;
namespace NewHorizons.Patches.SignalPatches namespace NewHorizons.Patches.SignalPatches
{ {
@ -19,14 +18,14 @@ namespace NewHorizons.Patches.SignalPatches
public static bool Signalscope_SwitchFrequencyFilter(Signalscope __instance, int increment) public static bool Signalscope_SwitchFrequencyFilter(Signalscope __instance, int increment)
{ {
var count = SignalBuilder.NumberOfFrequencies; var count = SignalBuilder.NumberOfFrequencies;
__instance._frequencyFilterIndex = (__instance._frequencyFilterIndex + increment + count) % count; __instance._frequencyFilterIndex += increment;
__instance._frequencyFilterIndex = __instance._frequencyFilterIndex >= count ? 0 : __instance._frequencyFilterIndex;
__instance._frequencyFilterIndex = __instance._frequencyFilterIndex < 0 ? count - 1 : __instance._frequencyFilterIndex;
var signalFrequency = AudioSignal.IndexToFrequency(__instance._frequencyFilterIndex); var signalFrequency = AudioSignal.IndexToFrequency(__instance._frequencyFilterIndex);
var isUnknownNearby = __instance._isUnknownFreqNearby && __instance._unknownFrequency == signalFrequency; // Skip over this frequency
var isUnknown = !PlayerData.KnowsFrequency(signalFrequency) && !(__instance._isUnknownFreqNearby && __instance._unknownFrequency == signalFrequency);
// If it's not in use, or its unknown and isn't about to be learned, then go to the next one. if (isUnknown || !SignalBuilder.IsFrequencyInUse(signalFrequency))
if ((!PlayerData.KnowsFrequency(signalFrequency) && !isUnknownNearby) || !SignalBuilder.IsFrequencyInUse(signalFrequency))
{ {
__instance.SwitchFrequencyFilter(increment); __instance.SwitchFrequencyFilter(increment);
} }