using TMPro; using UnityEngine; using UnityEngine.UI; public class AmmoScreenView : MonoBehaviour { [SerializeField] private Image TorpedoReloadBar; [SerializeField] private Image MissileReloadBar; [SerializeField] private float FillMaxSpeed = 10; [SerializeField] private TextMeshProUGUI TorpedoAmmoLabel; [SerializeField] private TextMeshProUGUI MissileAmmoLabel; [SerializeField] private GameObject TorpedoPointer; [SerializeField] private GameObject MissilePointer; WeaponModel model; public void Initialize(WeaponModel weaponModel) { model = weaponModel; weaponModel.OnUpdate += Refresh; Refresh(G.WeaponModel); } private void Refresh(WeaponModel model) { TorpedoAmmoLabel.text = model.Weapons[0].Ammo.ToString(); MissileAmmoLabel.text = model.Weapons[1].Ammo.ToString(); if (model.CurrentWeapon == model.Weapons[0]) { TorpedoPointer.SetActive(true); MissilePointer.SetActive(false); } else { TorpedoPointer.SetActive(false); MissilePointer.SetActive(true); } } private void Update() { if (model == null) return; //Расчет отображения прогресса перезарядки float delta = FillMaxSpeed * Time.deltaTime; ProcessBar(TorpedoReloadBar, delta, G.WeaponModel.Weapons[0].ReloadPercent); ProcessBar(MissileReloadBar, delta, G.WeaponModel.Weapons[1].ReloadPercent); } private void ProcessBar(Image bar, float delta, float targetPercent) { float targetFillAmount = 1 - targetPercent; //float progress = Mathf.MoveTowards(bar.fillAmount, targetFillAmount, delta); //bar.fillAmount = progress; bar.fillAmount = targetFillAmount; } }