Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/UI_PlayerStaminaIndicator.cs
2026-03-04 09:37:33 +08:00

65 lines
1.5 KiB
C#

using DG.Tweening;
using Obvious.Soap;
using SoapCustomVariable;
using UnityEngine;
using UnityEngine.UI;
public class UI_PlayerStaminaIndicator : MonoBehaviour
{
[SerializeField]
private FloatVariable playerStamina;
[SerializeField]
private BoolVariable isStaminaReachedZero;
[SerializeField]
private FSMVariable playerState;
[SerializeField]
private Image fillImage;
private Color startColor;
private CanvasGroup canvasGroup;
private void OnEnable()
{
canvasGroup = GetComponent<CanvasGroup>();
startColor = fillImage.color;
PlayerStamina_OnValueChanged(playerStamina.Value);
playerState.OnValueChanged += PlayerState_OnValueChanged;
playerStamina.OnValueChanged += PlayerStamina_OnValueChanged;
isStaminaReachedZero.OnValueChanged += IsStaminaReachedZero_OnValueChanged;
}
private void OnDisable()
{
playerState.OnValueChanged -= PlayerState_OnValueChanged;
playerStamina.OnValueChanged -= PlayerStamina_OnValueChanged;
isStaminaReachedZero.OnValueChanged -= IsStaminaReachedZero_OnValueChanged;
}
private void PlayerState_OnValueChanged(State state)
{
canvasGroup.alpha = ((state == State.fight) ? 1f : 0f);
}
private void IsStaminaReachedZero_OnValueChanged(bool value)
{
DOTween.Kill(fillImage);
if (value)
{
fillImage.DOColor(Color.red, 1f).SetLoops(-1, LoopType.Yoyo);
}
else
{
fillImage.color = startColor;
}
}
private void PlayerStamina_OnValueChanged(float value)
{
fillImage.fillAmount = value;
}
}