53 lines
1.5 KiB
C#
53 lines
1.5 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
public class AlternateUniverseManager : MonoBehaviour
|
|
{
|
|
public event UnityAction OnGhostUniverse;
|
|
public event UnityAction OnAliveUniverse;
|
|
public bool IsInGhostUniverse;
|
|
public bool CanTearFabricOfReality;
|
|
|
|
Coroutine ghostUniverseTimerCoroutine;
|
|
|
|
private static AlternateUniverseManager _instance;
|
|
public static AlternateUniverseManager GetInstance() { return _instance; }
|
|
|
|
private void Awake()
|
|
{
|
|
if (!_instance)
|
|
{
|
|
_instance = this;
|
|
}
|
|
}
|
|
|
|
public void InvokeOnGhostUniverse()
|
|
{
|
|
OnGhostUniverse?.Invoke();
|
|
Sanity.GetInstance().sanityDropSpeedValue = Sanity.GetInstance().sanityDropSpeedInGhostUniverseValue;
|
|
if (ghostUniverseTimerCoroutine == null)
|
|
{
|
|
ghostUniverseTimerCoroutine = StartCoroutine(GhostUniverseTimer());
|
|
print("Start Ghost Universe Timer");
|
|
}
|
|
}
|
|
|
|
public void InvokeOnAliveUniverse()
|
|
{
|
|
OnAliveUniverse?.Invoke();
|
|
Sanity.GetInstance().sanityDropSpeedValue = Sanity.GetInstance().sanityDropSpeedDefaultValue;
|
|
if (ghostUniverseTimerCoroutine != null)
|
|
{
|
|
StopCoroutine(ghostUniverseTimerCoroutine);
|
|
ghostUniverseTimerCoroutine = null;
|
|
}
|
|
}
|
|
|
|
IEnumerator GhostUniverseTimer()
|
|
{
|
|
yield return new WaitForSeconds(60f);
|
|
AlternateUniversePlayerController.GetInstance().PhaseOutOfGhostUniverse();
|
|
}
|
|
}
|