KitchenChaos/Assets/Scripts/Counters/StoveCounterSound.cs

53 lines
1.2 KiB
C#

using UnityEngine;
public class StoveCounterSound : MonoBehaviour
{
[SerializeField] private StoveCounter stoveCounter;
private AudioSource audioSource;
private float warningSoundTimer;
private bool playWarningSound;
private const float warningSoundTimerMax = .5f;
private void Awake()
{
audioSource = GetComponent<AudioSource>();
}
private void Start()
{
stoveCounter.OnStateChanged += StoveCounter_OnStateChanged;
stoveCounter.OnProgressChanged += StoveCounter_OnProgressChanged;
}
private void StoveCounter_OnStateChanged(object sender, StateChangedEventArgs e)
{
if (e.State is StoveCounter.State.Frying or StoveCounter.State.Fried)
{
audioSource.Play();
}
else
{
audioSource.Pause();
}
}
private void StoveCounter_OnProgressChanged(object sender, IHasProgress.ProgressChangedEventArgs e)
{
float burnShowProgressAmount = .5f;
playWarningSound = stoveCounter.IsFried() && e.ProgressNormalized >= burnShowProgressAmount;
}
private void Update()
{
if (playWarningSound)
{
warningSoundTimer -= Time.deltaTime;
if (warningSoundTimer <= 0f)
{
warningSoundTimer = warningSoundTimerMax;
SoundManager.Instance.PlayWarningSound(stoveCounter.transform.position);
}
}
}
}