92 lines
1.5 KiB
C#
92 lines
1.5 KiB
C#
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);
|
|
}
|
|
}
|