using TMPro; using UnityEngine; using Arena.Combat; namespace Arena.UI { /// /// Displays the ammo of a launcher as "current / max". /// public class AmmoView : MonoBehaviour { [System.Serializable] public struct References { public TMP_Text Label; } #region Fields [SerializeField] private References _references; private ProjectileLauncher _launcher; #endregion #region Unity Lifecycle private void OnDestroy() { if (_launcher != null) _launcher.OnAmmoChange -= HandleAmmoChange; } #endregion #region Public Methods /// /// Starts displaying the ammo of a launcher. Called by the UiManager. /// public void Bind(ProjectileLauncher launcher) { _launcher = launcher; _launcher.OnAmmoChange += HandleAmmoChange; HandleAmmoChange(_launcher.State.Ammo, _launcher.MaxAmmo); } #endregion #region Private Methods private void HandleAmmoChange(int current, int max) { _references.Label.SetText("{0} / {1}", current, max); } #endregion } }