using System.Collections; using System.Collections.Generic; using UnityEngine; using Variables; public class SneakyTextController : MonoBehaviour { [SerializeField] private Reference m_lightLevel; [SerializeField] private Reference m_freezePlayer; [SerializeField] private Reference m_manuelDarknesscontrol; [SerializeField] private float m_time = 10; [SerializeField] private GameObject m_timerObject; [SerializeField] private TMPro.TextMeshProUGUI m_text; private bool m_hasTriggered = false; private void OnEnable() { m_lightLevel.OnValueChanged += OnLightChange; } private void OnDisable() { m_lightLevel.OnValueChanged -= OnLightChange; } private void Start() { m_text.gameObject.SetActive(false); } private void OnLightChange(float value) { if (!m_hasTriggered && !m_freezePlayer) { m_hasTriggered = true; StartCoroutine(Timer( m_time)); } } private IEnumerator Timer(float time) { Debug.Log("Showing sneaky text"); m_manuelDarknesscontrol.Value = true; float elapsedTime = 0; float fadeTime = 0.33f; m_text.gameObject.SetActive(true); Color color = m_text.color; while (elapsedTime< fadeTime) { m_lightLevel.Value = 1 - (elapsedTime / fadeTime); color.a = 1 - m_lightLevel; m_text.color = color; yield return new WaitForEndOfFrame(); elapsedTime += Time.deltaTime; } m_lightLevel.Value = 0; color.a = 1 - m_lightLevel; m_text.color = color; m_timerObject.SetActive(false); Time.timeScale = 0.1f; elapsedTime = 0; fadeTime = 1.0f; while (elapsedTime < fadeTime) { Time.timeScale = 1 - (elapsedTime / fadeTime); yield return new WaitForEndOfFrame(); elapsedTime += Time.unscaledDeltaTime; } yield return new WaitForSecondsRealtime(time); Time.timeScale = 1; m_timerObject.SetActive(true); elapsedTime = 0; fadeTime = 0.25f; while (elapsedTime < fadeTime) { m_lightLevel.Value = (elapsedTime / fadeTime); color.a = 1 - (elapsedTime / fadeTime); m_text.color = color; yield return new WaitForEndOfFrame(); elapsedTime += Time.deltaTime; } m_text.gameObject.SetActive(false); m_manuelDarknesscontrol.Value = false; } }