From cb08f4710d184b778bb4d92e995ba264186744bb Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Mon, 3 Apr 2023 20:34:07 -0700 Subject: [PATCH] patch forget frequency --- NewHorizons/External/NewHorizonsData.cs | 10 ++++++++++ .../PlayerPatches/PlayerDataPatches.cs | 19 ++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/NewHorizons/External/NewHorizonsData.cs b/NewHorizons/External/NewHorizonsData.cs index 60fdcd01..b691b622 100644 --- a/NewHorizons/External/NewHorizonsData.cs +++ b/NewHorizons/External/NewHorizonsData.cs @@ -128,6 +128,16 @@ namespace NewHorizons.External } } + public static void ForgetFrequency(string frequency) + { + if (_activeProfile == null) return; + if (KnowsFrequency(frequency)) + { + _activeProfile.KnownFrequencies.Remove(frequency); + Save(); + } + } + public static bool KnowsMultipleFrequencies() { return _activeProfile != null && _activeProfile.KnownFrequencies.Count > 0; diff --git a/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs b/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs index 8b4ad81e..16056c7b 100644 --- a/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs +++ b/NewHorizons/Patches/PlayerPatches/PlayerDataPatches.cs @@ -40,6 +40,19 @@ namespace NewHorizons.Patches.PlayerPatches return true; } + [HarmonyPrefix] + [HarmonyPatch(nameof(PlayerData.ForgetFrequency))] + public static bool PlayerData_ForgetFrequency(SignalFrequency frequency) + { + var freqString = SignalBuilder.GetCustomFrequencyName(frequency); + if (!string.IsNullOrEmpty(freqString)) + { + NewHorizonsData.ForgetFrequency(freqString); + return false; + } + return true; + } + [HarmonyPrefix] [HarmonyPatch(nameof(PlayerData.KnowsSignal))] public static bool PlayerData_KnowsSignal(SignalName signalName, ref bool __result) @@ -60,11 +73,7 @@ namespace NewHorizons.Patches.PlayerPatches var customSignalName = SignalBuilder.GetCustomSignalName(signalName); if (!string.IsNullOrEmpty(customSignalName)) { - if (!NewHorizonsData.KnowsSignal(customSignalName)) - { - NewHorizonsData.LearnSignal(customSignalName); - } - + NewHorizonsData.LearnSignal(customSignalName); AchievementHandler.OnLearnSignal(); return false;