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

View File

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