Use InterferenceVolume instead of id

This commit is contained in:
Noah Pilarski 2022-09-04 01:41:25 -04:00
parent ad79680388
commit f9882b5b00
2 changed files with 47 additions and 38 deletions

View File

@ -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);
}
}

View File

@ -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");
}
}