using UnityEngine; using UnityEngine.Serialization; public class EnergyBar : MonoBehaviour { [FormerlySerializedAs("valueCurrent")] [SerializeField] private int _valueCurrent = 50; public int valueMin; public int valueMax = 100; [HideInInspector] public bool animationEnabled; [HideInInspector] public float animValueF; public int valueCurrent { get { return Mathf.Clamp(_valueCurrent, valueMin, valueMax); } set { _valueCurrent = value; } } public float ValueF { get { if (valueMax == valueMin) { return 0f; } if (!animationEnabled) { return Mathf.Clamp((float)(valueCurrent - valueMin) / (float)(valueMax - valueMin), 0f, 1f); } return Mathf.Clamp(animValueF, 0f, 1f); } set { valueCurrent = Mathf.RoundToInt(value * (float)(valueMax - valueMin) + (float)valueMin); } } protected void Update() { if (animationEnabled) { valueCurrent = valueMin + (int)(animValueF * (float)(valueMax - valueMin)); } } public void SetValueCurrent(int valueCurrent) { this.valueCurrent = valueCurrent; } public void SetValueMin(int valueMin) { this.valueMin = valueMin; } public void SetValueMax(int valueMax) { this.valueMax = valueMax; } public void SetValueF(float valueF) { ValueF = valueF; } public void ChangeValueF(float valueF) { ValueF += valueF; ValueF = Mathf.Clamp01(ValueF); } public void ChangeValueCurrent(int value) { valueCurrent += value; ValueF = Mathf.Clamp01(ValueF); } }