99 lines
2.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class TorpedoAimView : MonoBehaviour
{
[SerializeField] private CanvasGroup reloadGroup;
[SerializeField] private Image reloadBar;
//[SerializeField] private TextMeshProUGUI ammoLabel;
private TorpedoWeapon weapon;
private bool initialized = false;
private bool reloadAnimationEnabled;
public void Initialilze()
{
if (G.WeaponModel.Weapons[0].TryGetComponent(out TorpedoWeapon torpedo))
{
weapon = torpedo;
initialized = true;
}
else
{
Debug.Log("Не найдено торпедное оружие");
initialized = false;
}
RefreshAmmo(weapon.Ammo);
weapon.AmmoChanged += RefreshAmmo;
}
private void OnDestroy()
{
if (!initialized) return;
weapon.AmmoAdded -= RefreshAmmo;
}
private void Update()
{
if (!initialized) return;
Refresh();
}
private void OnEnable()
{
reloadGroup.alpha = 0;
}
private void OnDisable()
{
reloadAnimationEnabled = false;
}
private void Refresh()
{
if (weapon.ReloadPercent < 1 && !reloadAnimationEnabled)
{
EnableReloadAnimation();
}
if (reloadAnimationEnabled && weapon.ReloadPercent >= 1)
{
DisableReloadAnimation();
}
}
private void RefreshAmmo(int ammo)
{
//ammoLabel.text = $"Торпеды: {ammo}";
}
private void EnableReloadAnimation()
{
StopAllCoroutines();
reloadAnimationEnabled = true;
StartCoroutine(ReloadAnimation());
}
private void DisableReloadAnimation()
{
reloadAnimationEnabled = false;
}
IEnumerator ReloadAnimation()
{
while (reloadAnimationEnabled)
{
reloadGroup.alpha = Mathf.Sin(Time.time * 5) / 2 + 0.5f;
reloadBar.fillAmount = weapon.ReloadPercent;
yield return null;
}
while (reloadGroup.alpha > 0)
{
reloadGroup.alpha -= Time.deltaTime;
}
}
}