49 lines
2.2 KiB
C#
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);
|
|
} |