r2mods/ilspy_dump/ror2_csproj/RoR2.EntityLogic/TeleporterEventRelay.cs

60 lines
2.1 KiB
C#

using UnityEngine;
using UnityEngine.Events;
namespace RoR2.EntityLogic;
public class TeleporterEventRelay : MonoBehaviour
{
public UnityEvent onTeleporterBeginCharging;
public UnityEvent onTeleporterCharged;
public UnityEvent onTeleporterFinish;
private TeleporterInteraction.ActivationState recordedActivationState;
public void OnEnable()
{
TeleporterInteraction.onTeleporterBeginChargingGlobal += CheckTeleporterBeginCharging;
TeleporterInteraction.onTeleporterChargedGlobal += CheckTeleporterCharged;
TeleporterInteraction.onTeleporterFinishGlobal += CheckTeleporterFinish;
CheckTeleporterBeginCharging(TeleporterInteraction.instance);
CheckTeleporterCharged(TeleporterInteraction.instance);
CheckTeleporterFinish(TeleporterInteraction.instance);
}
public void OnDisable()
{
TeleporterInteraction.onTeleporterBeginChargingGlobal -= CheckTeleporterBeginCharging;
TeleporterInteraction.onTeleporterChargedGlobal -= CheckTeleporterCharged;
TeleporterInteraction.onTeleporterFinishGlobal -= CheckTeleporterFinish;
}
private void CheckTeleporterBeginCharging(TeleporterInteraction teleporter)
{
if ((bool)teleporter && teleporter.activationState >= TeleporterInteraction.ActivationState.Charging && recordedActivationState < TeleporterInteraction.ActivationState.Charging)
{
onTeleporterBeginCharging?.Invoke();
recordedActivationState = TeleporterInteraction.ActivationState.Charging;
}
}
private void CheckTeleporterCharged(TeleporterInteraction teleporter)
{
if ((bool)teleporter && teleporter.activationState >= TeleporterInteraction.ActivationState.Charged && recordedActivationState < TeleporterInteraction.ActivationState.Charged)
{
onTeleporterCharged?.Invoke();
recordedActivationState = TeleporterInteraction.ActivationState.Charged;
}
}
private void CheckTeleporterFinish(TeleporterInteraction teleporter)
{
if ((bool)teleporter && teleporter.activationState >= TeleporterInteraction.ActivationState.Finished && recordedActivationState < TeleporterInteraction.ActivationState.Finished)
{
onTeleporterFinish?.Invoke();
recordedActivationState = TeleporterInteraction.ActivationState.Finished;
}
}
}