Cloaked uncloaked duplicate signals bug (#592)

<!-- A new module or something else important -->
## Major features
-

<!-- A new parameter added to a module, or API feature -->
## Minor features
-

<!-- Some improvement that requires no action on the part of add-on
creators i.e., improved star graphics -->
## Improvements
-

<!-- Be sure to reference the existing issue if it exists -->
## Bug fixes
- FIXED: making two signals of the same name and placing one inside a
cloak and the other outside a cloak would cause both to be considered
"inside the cloak".
    - Also applied the same fix to quantum moon signals
This commit is contained in:
Will Corby 2023-05-28 17:05:23 -07:00 committed by GitHub
commit 4b6bba26de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 12 deletions

View File

@ -8,6 +8,7 @@ using OWML.Utils;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using NewHorizons.External.Modules.Props.Audio; using NewHorizons.External.Modules.Props.Audio;
using System.Linq;
namespace NewHorizons.Builder.Props.Audio namespace NewHorizons.Builder.Props.Audio
{ {
@ -19,8 +20,8 @@ namespace NewHorizons.Builder.Props.Audio
public static int NumberOfFrequencies; public static int NumberOfFrequencies;
private static List<SignalName> _qmSignals; private static List<AudioSignal> _qmSignals;
private static List<SignalName> _cloakedSignals; private static List<AudioSignal> _cloakedSignals;
public static bool Initialized; public static bool Initialized;
@ -35,20 +36,20 @@ namespace NewHorizons.Builder.Props.Audio
}; };
NumberOfFrequencies = EnumUtils.GetValues<SignalFrequency>().Length; NumberOfFrequencies = EnumUtils.GetValues<SignalFrequency>().Length;
_qmSignals = new List<SignalName>() { SignalName.Quantum_QM }; _qmSignals = new List<AudioSignal>() { SearchUtilities.Find("QuantumMoon_Body/Signal_Quantum").GetComponent<AudioSignal>() };
_cloakedSignals = new List<SignalName>(); _cloakedSignals = new List<AudioSignal>();
Initialized = true; Initialized = true;
} }
public static bool IsCloaked(this SignalName signalName) public static bool IsCloaked(this AudioSignal signal)
{ {
return _cloakedSignals.Contains(signalName); return _cloakedSignals.Contains(signal);
} }
public static bool IsOnQuantumMoon(this SignalName signalName) public static bool IsOnQuantumMoon(this AudioSignal signal)
{ {
return _qmSignals.Contains(signalName); return _qmSignals.Contains(signal);
} }
public static SignalFrequency AddFrequency(string str) public static SignalFrequency AddFrequency(string str)
@ -149,8 +150,8 @@ namespace NewHorizons.Builder.Props.Audio
signalGO.SetActive(true); signalGO.SetActive(true);
// Track certain special signal things // Track certain special signal things
if (planetGO.GetComponent<AstroObject>()?.GetAstroObjectName() == AstroObject.Name.QuantumMoon) _qmSignals.Add(name); if (planetGO.GetComponent<AstroObject>()?.GetAstroObjectName() == AstroObject.Name.QuantumMoon) _qmSignals.Add(audioSignal);
if (info.insideCloak) _cloakedSignals.Add(name); if (info.insideCloak) _cloakedSignals.Add(audioSignal);
return signalGO; return signalGO;
} }

View File

@ -81,8 +81,8 @@ namespace NewHorizons.Patches.SignalPatches
{ {
if (!SignalBuilder.Initialized) return true; if (!SignalBuilder.Initialized) return true;
var isCloaked = __instance._name.IsCloaked(); var isCloaked = __instance.IsCloaked();
var isOnQuantumMoon = __instance._name.IsOnQuantumMoon(); var isOnQuantumMoon = __instance.IsOnQuantumMoon();
if (!isCloaked && !isOnQuantumMoon) return true; if (!isCloaked && !isOnQuantumMoon) return true;