53 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |