KitchenChaos/Assets/Scripts/SoundManager.cs

49 lines
2.2 KiB
C#

using System;
using Counters;
using UnityEngine;
using Random = UnityEngine.Random;
public class SoundManager : MonoBehaviour {
public static SoundManager Instance { get; private set; }
[SerializeField] private AudioClipRefsSO audioClipRefsSO;
private void Start() {
DeliveryManager.Instance.OnRecipeSuccess += DeliveryManager_OnRecipeSuccess;
DeliveryManager.Instance.OnRecipeFailed += DeliveryManager_OnRecipeFailed;
CuttingCounter.OnAnyCut += CuttingCounter_OnAnyCut;
Player.Instance.OnPickedSomething += Player_OnPickedSomething;
BaseCounter.OnAnyObjectPlacedHere += BaseCounter_OnAnyObjectPlacedHere;
TrashCounter.OnAnyObjectTrashed += TrashCounter_OnAnyObjectTrashed;
}
private void Awake() {
Instance = this;
}
private void TrashCounter_OnAnyObjectTrashed(object sender, EventArgs e) =>
PlaySound(audioClipRefsSO.trash, (sender as TrashCounter).transform.position);
private void BaseCounter_OnAnyObjectPlacedHere(object sender, EventArgs e) =>
PlaySound(audioClipRefsSO.objectDrop, (sender as BaseCounter).transform.position);
private void Player_OnPickedSomething(object sender, EventArgs e) =>
PlaySound(audioClipRefsSO.objectPickup, Player.Instance.transform.position);
private void CuttingCounter_OnAnyCut(object sender, EventArgs e) =>
PlaySound(audioClipRefsSO.chop, (sender as CuttingCounter).transform.position);
private void DeliveryManager_OnRecipeFailed(object sender, EventArgs e) => PlaySound(audioClipRefsSO.deliveryFail,
DeliveryCounter.Instance.transform.position);
private void DeliveryManager_OnRecipeSuccess(object sender, EventArgs e) =>
PlaySound(audioClipRefsSO.deliverySuccess, DeliveryCounter.Instance.transform.position);
private void PlaySound(AudioClip audioClip, Vector3 position, float volume = 1f) =>
AudioSource.PlayClipAtPoint(audioClip, position, volume);
private void PlaySound(AudioClip[] audioClipArray, Vector3 position, float volume = 1f) =>
PlaySound(audioClipArray[Random.Range(0, audioClipArray.Length)], position, volume);
public void PlayFootstepsSound(Vector3 position, float volume) =>
PlaySound(audioClipRefsSO.footstep, position, volume);
}