mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Use InterferenceVolume instead of id
This commit is contained in:
parent
ad79680388
commit
f9882b5b00
@ -10,21 +10,19 @@ namespace NewHorizons.Components
|
||||
{
|
||||
public class InterferenceVolume : BaseVolume
|
||||
{
|
||||
private string _id = Guid.NewGuid().ToString();
|
||||
|
||||
public override void OnTriggerVolumeEntry(GameObject hitObj)
|
||||
{
|
||||
if (hitObj.CompareTag("PlayerDetector"))
|
||||
{
|
||||
InterferenceHandler.OnPlayerEnterInterferenceVolume(_id);
|
||||
OnPlayerEnter();
|
||||
}
|
||||
else if (hitObj.CompareTag("ProbeDetector"))
|
||||
{
|
||||
InterferenceHandler.OnProbeEnterInterferenceVolume(_id);
|
||||
OnProbeEnter();
|
||||
}
|
||||
else if (hitObj.CompareTag("ShipDetector"))
|
||||
{
|
||||
InterferenceHandler.OnShipEnterInterferenceVolume(_id);
|
||||
OnShipEnter();
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,25 +30,25 @@ namespace NewHorizons.Components
|
||||
{
|
||||
if (hitObj.CompareTag("PlayerDetector"))
|
||||
{
|
||||
InterferenceHandler.OnPlayerExitInterferenceVolume(_id);
|
||||
OnPlayerExit();
|
||||
}
|
||||
else if (hitObj.CompareTag("ProbeDetector"))
|
||||
{
|
||||
InterferenceHandler.OnProbeExitInterferenceVolume(_id);
|
||||
OnProbeExit();
|
||||
}
|
||||
else if (hitObj.CompareTag("ShipDetector"))
|
||||
{
|
||||
InterferenceHandler.OnShipExitInterferenceVolume(_id);
|
||||
OnShipExit();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPlayerEnter() => InterferenceHandler.OnPlayerEnterInterferenceVolume(_id);
|
||||
public void OnPlayerExit() => InterferenceHandler.OnPlayerExitInterferenceVolume(_id);
|
||||
public void OnPlayerEnter() => InterferenceHandler.OnPlayerEnterInterferenceVolume(this);
|
||||
public void OnPlayerExit() => InterferenceHandler.OnPlayerExitInterferenceVolume(this);
|
||||
|
||||
public void OnProbeEnter() => InterferenceHandler.OnProbeEnterInterferenceVolume(_id);
|
||||
public void OnProbeExit() => InterferenceHandler.OnProbeExitInterferenceVolume(_id);
|
||||
public void OnProbeEnter() => InterferenceHandler.OnProbeEnterInterferenceVolume(this);
|
||||
public void OnProbeExit() => InterferenceHandler.OnProbeExitInterferenceVolume(this);
|
||||
|
||||
public void OnShipEnter() => InterferenceHandler.OnShipEnterInterferenceVolume(_id);
|
||||
public void OnShipExit() => InterferenceHandler.OnShipExitInterferenceVolume(_id);
|
||||
public void OnShipEnter() => InterferenceHandler.OnShipEnterInterferenceVolume(this);
|
||||
public void OnShipExit() => InterferenceHandler.OnShipExitInterferenceVolume(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,58 +6,69 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace NewHorizons.Handlers
|
||||
{
|
||||
using InterferenceVolume = NewHorizons.Components.InterferenceVolume;
|
||||
|
||||
public static class InterferenceHandler
|
||||
{
|
||||
private static List<string> _playerInterference;
|
||||
private static List<string> _probeInterference;
|
||||
private static List<string> _shipInterference;
|
||||
private static List<InterferenceVolume> _playerInterference;
|
||||
private static List<InterferenceVolume> _probeInterference;
|
||||
private static List<InterferenceVolume> _shipInterference;
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
_playerInterference = new List<string>();
|
||||
_probeInterference = new List<string>();
|
||||
_shipInterference = new List<string>();
|
||||
_playerInterference = new List<InterferenceVolume>();
|
||||
_probeInterference = new List<InterferenceVolume>();
|
||||
_shipInterference = new List<InterferenceVolume>();
|
||||
}
|
||||
|
||||
public static bool PlayerHasInterference() => _playerInterference.Any();
|
||||
public static bool ProbeHasInterference() => _probeInterference.Any();
|
||||
public static bool ShipHasInterference() => _shipInterference.Any();
|
||||
public static bool PlayerHasInterference() => _playerInterference.Any(volume => volume != null);
|
||||
public static bool ProbeHasInterference() => _probeInterference.Any(volume => volume != null);
|
||||
public static bool ShipHasInterference() => _shipInterference.Any(volume => volume != null);
|
||||
|
||||
public static bool IsPlayerSameAsProbe() => _playerInterference.All(_probeInterference.Contains) && _playerInterference.Count == _probeInterference.Count;
|
||||
public static bool IsPlayerSameAsShip() => _playerInterference.All(_shipInterference.Contains) && _playerInterference.Count == _shipInterference.Count;
|
||||
|
||||
public static void OnPlayerEnterInterferenceVolume(string id)
|
||||
public static bool IsPlayerSameAsProbe()
|
||||
{
|
||||
_playerInterference.SafeAdd(id);
|
||||
_playerInterference.RemoveAll(volume => volume == null);
|
||||
return _playerInterference.All(_probeInterference.Contains) && _playerInterference.Count == _probeInterference.Count;
|
||||
}
|
||||
|
||||
public static bool IsPlayerSameAsShip()
|
||||
{
|
||||
_playerInterference.RemoveAll(volume => volume == null);
|
||||
return _playerInterference.All(_shipInterference.Contains) && _playerInterference.Count == _shipInterference.Count;
|
||||
}
|
||||
|
||||
public static void OnPlayerEnterInterferenceVolume(InterferenceVolume interferenceVolume)
|
||||
{
|
||||
_playerInterference.SafeAdd(interferenceVolume);
|
||||
GlobalMessenger.FireEvent("RefreshHUDVisibility");
|
||||
}
|
||||
|
||||
public static void OnPlayerExitInterferenceVolume(string id)
|
||||
public static void OnPlayerExitInterferenceVolume(InterferenceVolume interferenceVolume)
|
||||
{
|
||||
_playerInterference.Remove(id);
|
||||
_playerInterference.Remove(interferenceVolume);
|
||||
GlobalMessenger.FireEvent("RefreshHUDVisibility");
|
||||
}
|
||||
|
||||
public static void OnProbeEnterInterferenceVolume(string id)
|
||||
public static void OnProbeEnterInterferenceVolume(InterferenceVolume interferenceVolume)
|
||||
{
|
||||
_probeInterference.SafeAdd(id);
|
||||
_probeInterference.SafeAdd(interferenceVolume);
|
||||
GlobalMessenger.FireEvent("RefreshHUDVisibility");
|
||||
}
|
||||
|
||||
public static void OnProbeExitInterferenceVolume(string id)
|
||||
public static void OnProbeExitInterferenceVolume(InterferenceVolume interferenceVolume)
|
||||
{
|
||||
_probeInterference.Remove(id);
|
||||
_probeInterference.Remove(interferenceVolume);
|
||||
GlobalMessenger.FireEvent("RefreshHUDVisibility");
|
||||
}
|
||||
|
||||
public static void OnShipEnterInterferenceVolume(string id)
|
||||
public static void OnShipEnterInterferenceVolume(InterferenceVolume interferenceVolume)
|
||||
{
|
||||
_shipInterference.SafeAdd(id);
|
||||
_shipInterference.SafeAdd(interferenceVolume);
|
||||
GlobalMessenger.FireEvent("RefreshHUDVisibility");
|
||||
}
|
||||
public static void OnShipExitInterferenceVolume(string id)
|
||||
public static void OnShipExitInterferenceVolume(InterferenceVolume interferenceVolume)
|
||||
{
|
||||
_shipInterference.Remove(id);
|
||||
_shipInterference.Remove(interferenceVolume);
|
||||
GlobalMessenger.FireEvent("RefreshHUDVisibility");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user