47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
|
|
[DisallowMultipleComponent]
|
|
public sealed class CannonTimerView : MonoBehaviour
|
|
{
|
|
[SerializeField] private NetworkCannonController controller;
|
|
[SerializeField] private TMP_Text timerText;
|
|
[SerializeField] private string emptyText = "INSERT ROCKET";
|
|
[SerializeField] private string loadedFormat = "DELAY {0:0}s";
|
|
[SerializeField] private string countdownFormat = "FIRE IN {0:0.0}s";
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (controller != null)
|
|
controller.Changed += Refresh;
|
|
Refresh();
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
if (controller != null)
|
|
controller.Changed -= Refresh;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (controller != null && controller.State == CannonState.Countdown)
|
|
Refresh();
|
|
}
|
|
|
|
private void Refresh()
|
|
{
|
|
if (timerText == null || controller == null)
|
|
return;
|
|
|
|
timerText.text = controller.State switch
|
|
{
|
|
CannonState.Empty => emptyText,
|
|
CannonState.Loaded => string.Format(loadedFormat, controller.SelectedDelay),
|
|
CannonState.Countdown => string.Format(
|
|
countdownFormat, controller.RemainingSeconds),
|
|
_ => emptyText
|
|
};
|
|
}
|
|
}
|