From 831a94cdbc45113d26cede9605da8f3e1836d1b3 Mon Sep 17 00:00:00 2001 From: xen-42 <22628069+xen-42@users.noreply.github.com> Date: Mon, 4 Aug 2025 21:44:18 -0400 Subject: [PATCH] Fixed a floating point rounding error --- NewHorizons/Builder/Props/Audio/SignalBuilder.cs | 4 ++-- NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/NewHorizons/Builder/Props/Audio/SignalBuilder.cs b/NewHorizons/Builder/Props/Audio/SignalBuilder.cs index e0167b41..b3ef42bb 100644 --- a/NewHorizons/Builder/Props/Audio/SignalBuilder.cs +++ b/NewHorizons/Builder/Props/Audio/SignalBuilder.cs @@ -100,8 +100,6 @@ namespace NewHorizons.Builder.Props.Audio var freq = CollectionUtilities.KeyByValue(_customFrequencyNames, str); if (freq != default) return freq; - NHLogger.Log($"Registering new frequency name [{str}]"); - if (NumberOfFrequencies == 31) { NHLogger.LogWarning($"Can't store any more frequencies, skipping [{str}]"); @@ -111,6 +109,8 @@ namespace NewHorizons.Builder.Props.Audio freq = EnumUtilities.Create(str); _customFrequencyNames.Add(freq, str); + NHLogger.Log($"Registered new frequency name [{str}] with value [{(int)freq}] and index [{AudioSignal.FrequencyToIndex(freq)}]"); + NumberOfFrequencies = EnumUtils.GetValues().Length; return freq; diff --git a/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs b/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs index a886b827..e9ce164b 100644 --- a/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs +++ b/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs @@ -45,7 +45,9 @@ namespace NewHorizons.Patches.SignalPatches SignalFrequency.HideAndSeek => 5, SignalFrequency.Radio => 6, SignalFrequency.Statue => 7, - _ => (int)(Mathf.Log((float)frequency) / Mathf.Log(2f)),// Frequencies are in powers of 2 + // Can't cast to int because floating point error, it was doing 12.9999999 -> 12 + // Frequencies are in powers of 2 + _ => Mathf.RoundToInt(Mathf.Log((float)frequency) / Mathf.Log(2f)), }; return false; }