using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Variables;
|
|
|
|
public class SneakyTextController : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private Reference<float> m_lightLevel;
|
|
|
|
[SerializeField]
|
|
private Reference<bool> m_freezePlayer;
|
|
|
|
[SerializeField]
|
|
private Reference<bool> 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;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|