// Assets/_Project/Scripts/Combat/TowerFallingSound.cs
using TD.Audio;
using TD.Gameplay;
using UnityEngine;
namespace TD.Combat
{
///
/// Local-only audio for the tower falling from the sky. Attached to
/// (not , which doesn't exist
/// yet) and polled every frame: plays a sound on every peer once construction has
/// seconds or less remaining, so the whoosh
/// leads the tower's actual fall/land animation (see ,
/// which starts once is replaced by the real
/// at construction-complete).
///
[RequireComponent(typeof(BuildSiteVisual))]
public class TowerFallingSound : MonoBehaviour
{
[SerializeField] private SoundConfig fallingSound;
[Tooltip("Sound fires once remaining construction time drops to this many seconds " +
"or less.")]
[SerializeField] private float triggerSecondsBeforeCompletion = 1f;
private BuildSiteVisual buildSiteVisual;
private bool played;
private void Awake()
{
buildSiteVisual = GetComponent();
}
private void Update()
{
if (played || buildSiteVisual == null) return;
if (buildSiteVisual.CurrentStage != BuildStage.Constructing) return;
if (buildSiteVisual.ComputeRemainingSeconds() <= triggerSecondsBeforeCompletion)
{
played = true;
AudioManager.Instance?.Play(fallingSound.clip, AudioCategory.UI, fallingSound.RandomPitch(), fallingSound.volume);
}
}
}
}