summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/AudioDayNightFader.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Thronefall_v1.0/Decompile/AudioDayNightFader.cs')
-rw-r--r--Thronefall_v1.0/Decompile/AudioDayNightFader.cs87
1 files changed, 87 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/AudioDayNightFader.cs b/Thronefall_v1.0/Decompile/AudioDayNightFader.cs
new file mode 100644
index 0000000..7734d83
--- /dev/null
+++ b/Thronefall_v1.0/Decompile/AudioDayNightFader.cs
@@ -0,0 +1,87 @@
+using System.Collections;
+using UnityEngine;
+using UnityEngine.Audio;
+
+public class AudioDayNightFader : MonoBehaviour, DayNightCycle.IDaytimeSensitive
+{
+ public float fadeTime = 0.5f;
+
+ public AudioMixer mixer;
+
+ public AudioClip nightMusic;
+
+ public AudioClip finalNightMusic;
+
+ public float nightMusicFadeInTime = 3f;
+
+ public float nightMusicFadeOutTime = 4f;
+
+ private float transitionClock;
+
+ private float dayTargetVol;
+
+ private float nightTargetVol;
+
+ private void Start()
+ {
+ DayNightCycle.Instance.RegisterDaytimeSensitiveObject(this);
+ mixer.GetFloat("DayEnvVolume", out dayTargetVol);
+ mixer.GetFloat("NightEnvVolume", out nightTargetVol);
+ dayTargetVol = Mathf.Pow(10f, dayTargetVol / 20f);
+ nightTargetVol = Mathf.Pow(10f, nightTargetVol / 20f);
+ mixer.SetFloat("NightEnvVolume", Mathf.Log10(0.0001f) * 20f);
+ }
+
+ public void OnDawn_AfterSunrise()
+ {
+ }
+
+ public void OnDawn_BeforeSunrise()
+ {
+ StopAllCoroutines();
+ StartCoroutine(FadeToDay());
+ }
+
+ public void OnDusk()
+ {
+ StopAllCoroutines();
+ StartCoroutine(FadeToNight());
+ }
+
+ private IEnumerator FadeToNight()
+ {
+ if (EnemySpawner.instance.Wavenumber >= EnemySpawner.instance.waves.Count - 1)
+ {
+ MusicManager.instance.PlayMusic(finalNightMusic, nightMusicFadeInTime);
+ }
+ else
+ {
+ MusicManager.instance.PlayMusic(nightMusic, nightMusicFadeInTime);
+ }
+ while (transitionClock < 1f)
+ {
+ transitionClock += Time.deltaTime / fadeTime;
+ mixer.SetFloat("DayEnvVolume", Mathf.Log10(Mathf.Lerp(dayTargetVol, 0.0001f, transitionClock)) * 20f);
+ mixer.SetFloat("NightEnvVolume", Mathf.Log10(Mathf.Lerp(0.0001f, nightTargetVol, transitionClock)) * 20f);
+ yield return null;
+ }
+ transitionClock = 1f;
+ mixer.SetFloat("DayEnvVolume", Mathf.Log10(0.0001f) * 20f);
+ mixer.SetFloat("NightEnvVolume", Mathf.Log10(nightTargetVol) * 20f);
+ }
+
+ private IEnumerator FadeToDay()
+ {
+ MusicManager.instance.PlayMusic(null, nightMusicFadeOutTime);
+ while (transitionClock > 0f)
+ {
+ transitionClock -= Time.deltaTime / fadeTime;
+ mixer.SetFloat("DayEnvVolume", Mathf.Log10(Mathf.Lerp(dayTargetVol, 0.0001f, transitionClock)) * 20f);
+ mixer.SetFloat("NightEnvVolume", Mathf.Log10(Mathf.Lerp(0.0001f, nightTargetVol, transitionClock)) * 20f);
+ yield return null;
+ }
+ transitionClock = 0f;
+ mixer.SetFloat("DayEnvVolume", Mathf.Log10(dayTargetVol) * 20f);
+ mixer.SetFloat("NightEnvVolume", Mathf.Log10(0.0001f) * 20f);
+ }
+}