using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyMusicManager : MonoBehaviour { [SerializeField] AudioFader patrolingMusic; [SerializeField] AudioFader chasingMusic; [SerializeField] AudioFader searchingMusic; public bool shouldUpdateMusicAtStart; private bool isUpdatingMusic; private bool shouldBeUpdatingPatrolingMusic = true; private bool shouldBeUpdatingChasingMusic = true; private bool shouldBeUpdatingSearchingMusic = true; private static EnemyMusicManager _instance; public static EnemyMusicManager GetInstance() { return _instance; } private void Awake() { if (!_instance) { _instance = this; } } private void Start() { if (shouldUpdateMusicAtStart) { UpdateMusic(); } } public void StopUpdatingMusic() { isUpdatingMusic = false; patrolingMusic.FadeOut(); chasingMusic.FadeOut(); searchingMusic.FadeOut(); //Reset bools: shouldBeUpdatingPatrolingMusic = true; shouldBeUpdatingChasingMusic = true; shouldBeUpdatingSearchingMusic = true; } public void UpdateMusic() { isUpdatingMusic = true; StartCoroutine(EnemyMusicUpdate()); } IEnumerator EnemyMusicUpdate() { while (isUpdatingMusic) { if (MedeaDemonicEnemyBehaviour.GetInstance() != null) { if (MedeaDemonicEnemyBehaviour.GetInstance().state == MedeaDemonicEnemyBehaviour.medeaState.Patroling && shouldBeUpdatingPatrolingMusic) { patrolingMusic.audioSource.Play(); patrolingMusic?.FadeIn(); chasingMusic?.FadeOut(); searchingMusic?.FadeOut(); shouldBeUpdatingPatrolingMusic = false; shouldBeUpdatingChasingMusic = true; shouldBeUpdatingSearchingMusic = true; print("Play patrol music"); } else if (MedeaDemonicEnemyBehaviour.GetInstance().state == MedeaDemonicEnemyBehaviour.medeaState.ChasePlayer && shouldBeUpdatingChasingMusic) { chasingMusic?.audioSource.Play(); patrolingMusic?.FadeOut(); chasingMusic?.FadeIn(); searchingMusic?.FadeOut(); shouldBeUpdatingPatrolingMusic = true; shouldBeUpdatingChasingMusic = false; shouldBeUpdatingSearchingMusic = true; print("Play chase music"); } else if (MedeaDemonicEnemyBehaviour.GetInstance().state == MedeaDemonicEnemyBehaviour.medeaState.SearchingForHiddenPlayer && shouldBeUpdatingSearchingMusic) { searchingMusic.audioSource.Play(); patrolingMusic?.FadeOut(); chasingMusic?.FadeOut(); searchingMusic?.FadeIn(); shouldBeUpdatingPatrolingMusic = true; shouldBeUpdatingChasingMusic = true; shouldBeUpdatingSearchingMusic = false; print("Play searching music"); } else if (PlayerDeath.GetInstance().playerIsDead || MedeaDemonicEnemyBehaviour.GetInstance().state == MedeaDemonicEnemyBehaviour.medeaState.Disabled) { patrolingMusic?.FadeOut(); chasingMusic?.FadeOut(); searchingMusic?.FadeOut(); print("Stop Enemy Music"); } } yield return null; } } }