using System.Collections.Generic; using BitStrap; using UnityEngine; public class LevelSoundManager : MonoBehaviour { public List ambientsDay = new List(); public List ambientsNight = new List(); public float ambientFadeTime = 30f; public List ambientsDayAudioObject = new List(); public List ambientsNightAudioObject = new List(); public bool sameNightEffects; public string effectsDay = string.Empty; public string effectsNight = string.Empty; [ReadOnly] public float effectTimer = -1f; public Vector2 effectFrequency = new Vector2(10f, 30f); [ReadOnly] public bool isDay = true; public void Initialize() { effectTimer = Random.Range(effectFrequency.x, effectFrequency.y); AudioObject audioObject = null; for (int i = 0; i < ambientsNight.Count; i++) { audioObject = AudioController.Play(ambientsNight[i]); if ((bool)audioObject) { audioObject.Pause(); ambientsNightAudioObject.Add(audioObject); } } for (int j = 0; j < ambientsDay.Count; j++) { audioObject = AudioController.Play(ambientsDay[j]); if ((bool)audioObject) { if (ambientsNightAudioObject.Count > 0) { audioObject.Pause(); } ambientsDayAudioObject.Add(audioObject); } } } private void Update() { if (effectTimer > 0f) { effectTimer -= Time.deltaTime; if (effectTimer <= 0f) { effectTimer = Random.Range(effectFrequency.x, effectFrequency.y); AudioController.Play((!isDay && !sameNightEffects) ? effectsNight : effectsDay, Random.Range(0.2f, 1f)); } } } public void StartDay(bool startDay, bool instant) { isDay = startDay; if (ambientsNightAudioObject.Count == 0) { return; } for (int i = 0; i < ambientsDayAudioObject.Count; i++) { if (isDay) { ambientsDayAudioObject[i].Unpause((!instant) ? ambientFadeTime : 0f); } else { ambientsDayAudioObject[i].Pause((!instant) ? ambientFadeTime : 0f); } } for (int j = 0; j < ambientsNightAudioObject.Count; j++) { if (!isDay) { ambientsNightAudioObject[j].Unpause((!instant) ? ambientFadeTime : 0f); } else { ambientsNightAudioObject[j].Pause((!instant) ? ambientFadeTime : 0f); } } } }