Files
HauntedBloodlines/Assets/Scripts/AlternateUniverse/AlternateUniverseDynamicEnivornment.cs
2025-05-29 22:31:40 +03:00

88 lines
3.0 KiB
C#

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Events;
public class AlternateUniverseDynamicEnivornment : MonoBehaviour
{
[SerializeField] private List<GameObject> GhostUniverseEnvironment;
[SerializeField] private List<GameObject> AliveUniverseEnvironment;
[Header("Events")]
[SerializeField] private UnityEvent OnGhostUniverseEnterEvent;
[SerializeField] private UnityEvent OnAliveUniverseEnterEvent;
private void Start()
{
if (AlternateUniverseManager.GetInstance() != null)
{
AlternateUniverseManager.GetInstance().OnGhostUniverse += GhostUniverseUpdateEnvironment;
AlternateUniverseManager.GetInstance().OnAliveUniverse += AliveUniverseUpdateEnvironment;
print("Subscribe (GhostUniverseUpdateEnvironment) ON START");
print("Subscribe (AliveUniverseUpdateEnvironment) ON START");
}
StartCoroutine(LateStart());
}
IEnumerator LateStart()
{
yield return new WaitForSeconds(0.5f);
if (AlternateUniverseManager.GetInstance() != null)
{
AlternateUniverseManager.GetInstance().OnGhostUniverse += GhostUniverseUpdateEnvironment;
AlternateUniverseManager.GetInstance().OnAliveUniverse += AliveUniverseUpdateEnvironment;
print("Subscribe (GhostUniverseUpdateEnvironment) ON LATE START");
print("Subscribe (AliveUniverseUpdateEnvironment) ON LATE START");
}
}
public void GhostUniverseUpdateEnvironment()
{
foreach (var GhostUniverseGameObject in GhostUniverseEnvironment)
{
GhostUniverseGameObject.SetActive(true);
}
if(AliveUniverseEnvironment.Count > 0)
{
foreach (var AliveUniverseGameObject in AliveUniverseEnvironment)
{
AliveUniverseGameObject.SetActive(false);
}
}
if(OnGhostUniverseEnterEvent != null)
{
OnGhostUniverseEnterEvent.Invoke();
}
}
public void AliveUniverseUpdateEnvironment()
{
foreach (var GhostUniverseGameObject in GhostUniverseEnvironment)
{
GhostUniverseGameObject.SetActive(false);
}
if (AliveUniverseEnvironment.Count > 0)
{
foreach (var AliveUniverseGameObject in AliveUniverseEnvironment)
{
AliveUniverseGameObject.SetActive(true);
}
}
if (OnAliveUniverseEnterEvent != null)
{
OnAliveUniverseEnterEvent.Invoke();
}
}
void OnDisable()
{
if (AlternateUniverseManager.GetInstance() != null)
{
AlternateUniverseManager.GetInstance().OnGhostUniverse -= GhostUniverseUpdateEnvironment;
AlternateUniverseManager.GetInstance().OnAliveUniverse -= AliveUniverseUpdateEnvironment;
print("Unsubscribe (GhostUniverseUpdateEnvironment)");
print("Unsubscribe (AliveUniverseUpdateEnvironment)");
}
}
}