Cloak Enter & Exit Events

This commit is contained in:
Noah Pilarski 2022-06-03 03:46:30 -04:00
parent ba63099a72
commit 2298445055
2 changed files with 88 additions and 0 deletions

View File

@ -20,9 +20,17 @@ namespace NewHorizons.Components
// Lets just clear these off idc // Lets just clear these off idc
_cloak.OnPlayerEnter = new OWEvent(); _cloak.OnPlayerEnter = new OWEvent();
_cloak.OnPlayerExit = new OWEvent(); _cloak.OnPlayerExit = new OWEvent();
_cloak.OnProbeEnter = new OWEvent();
_cloak.OnProbeExit = new OWEvent();
_cloak.OnShipEnter = new OWEvent();
_cloak.OnShipExit = new OWEvent();
_cloak.OnPlayerEnter += OnPlayerEnter; _cloak.OnPlayerEnter += OnPlayerEnter;
_cloak.OnPlayerExit += OnPlayerExit; _cloak.OnPlayerExit += OnPlayerExit;
_cloak.OnProbeEnter += OnProbeEnter;
_cloak.OnProbeExit += OnProbeExit;
_cloak.OnShipEnter += OnShipEnter;
_cloak.OnShipExit += OnShipExit;
_isInitialized = true; _isInitialized = true;
} }
@ -49,6 +57,8 @@ namespace NewHorizons.Components
{ {
renderer.forceRenderingOff = false; renderer.forceRenderingOff = false;
} }
GlobalMessenger.FireEvent("PlayerEnterCloakField");
} }
public void OnPlayerExit() public void OnPlayerExit()
@ -59,6 +69,28 @@ namespace NewHorizons.Components
{ {
renderer.forceRenderingOff = true; renderer.forceRenderingOff = true;
} }
GlobalMessenger.FireEvent("PlayerExitCloakField");
}
public void OnProbeEnter()
{
GlobalMessenger.FireEvent("ProbeEnterCloakField");
}
public void OnProbeExit()
{
GlobalMessenger.FireEvent("ProbeExitCloakField");
}
public void OnShipEnter()
{
GlobalMessenger.FireEvent("ShipEnterCloakField");
}
public void OnShipExit()
{
GlobalMessenger.FireEvent("ShipExitCloakField");
} }
public void EnableCloak() public void EnableCloak()

View File

@ -0,0 +1,56 @@
using HarmonyLib;
namespace NewHorizons.Patches
{
[HarmonyPatch]
public static class HUDPatches
{
[HarmonyPostfix]
[HarmonyPatch(typeof(HUDMarker), nameof(HUDMarker.Awake))]
public static void HUDMarker_Awake(HUDMarker __instance)
{
GlobalMessenger.AddListener("PlayerEnterCloakField", __instance.OnPlayerEnterCloakField);
GlobalMessenger.AddListener("PlayerExitCloakField", __instance.OnPlayerExitCloakField);
}
[HarmonyPostfix]
[HarmonyPatch(typeof(HUDMarker), nameof(HUDMarker.OnDestroy))]
public static void HUDMarker_OnDestroy(HUDMarker __instance)
{
GlobalMessenger.RemoveListener("PlayerEnterCloakField", __instance.OnPlayerEnterCloakField);
GlobalMessenger.RemoveListener("PlayerExitCloakField", __instance.OnPlayerExitCloakField);
}
[HarmonyPostfix]
[HarmonyPatch(typeof(ProbeHUDMarker), nameof(ProbeHUDMarker.Awake))]
public static void ProbeHUDMarker_Awake(ProbeHUDMarker __instance)
{
GlobalMessenger.AddListener("ProbeEnterCloakField", __instance.RefreshOwnVisibility);
GlobalMessenger.AddListener("ProbeExitCloakField", __instance.RefreshOwnVisibility);
}
[HarmonyPostfix]
[HarmonyPatch(typeof(ProbeHUDMarker), nameof(ProbeHUDMarker.OnDestroy))]
public static void ProbeHUDMarker_OnDestroy(ProbeHUDMarker __instance)
{
GlobalMessenger.RemoveListener("ProbeEnterCloakField", __instance.RefreshOwnVisibility);
GlobalMessenger.RemoveListener("ProbeExitCloakField", __instance.RefreshOwnVisibility);
}
[HarmonyPostfix]
[HarmonyPatch(typeof(ShipHUDMarker), nameof(ShipHUDMarker.Awake))]
public static void ShipHUDMarker_Awake(ShipHUDMarker __instance)
{
GlobalMessenger.AddListener("ShipEnterCloakField", __instance.RefreshOwnVisibility);
GlobalMessenger.AddListener("ShipExitCloakField", __instance.RefreshOwnVisibility);
}
[HarmonyPostfix]
[HarmonyPatch(typeof(ShipHUDMarker), nameof(ShipHUDMarker.OnDestroy))]
public static void ShipHUDMarker_OnDestroy(ShipHUDMarker __instance)
{
GlobalMessenger.RemoveListener("ShipEnterCloakField", __instance.RefreshOwnVisibility);
GlobalMessenger.RemoveListener("ShipExitCloakField", __instance.RefreshOwnVisibility);
}
}
}