Files
HauntedBloodlines/Assets/Scripts/Managers/EnemyMusicManager.cs
2025-05-29 22:31:40 +03:00

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;
}
}
}