114 lines
3.8 KiB
C#
114 lines
3.8 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|