using UnityEngine; using System.Collections; using MoreMountains.Tools; using UnityEngine.UI; namespace MoreMountains.Tools { /// <summary> /// Add this class to a radial image and it'll allow you to control its fill amount /// This is a legacy class, and it's recommended to use MMProgressBar instead, it'll provide the same functionality /// (make sure you pick FillAmount as the FillMode) /// and much more options, such as delayed bars, events, bump, and more! /// </summary> [AddComponentMenu("More Mountains/Tools/GUI/MMRadialProgressBar")] public class MMRadialProgressBar : MonoBehaviour { /// the start fill amount value public float StartValue = 1f; /// the end goad fill amount value public float EndValue = 0f; /// the distance to the start or end value at which the class should start lerping public float Tolerance = 0.01f; /// optional - the ID of the player associated to this bar public string PlayerID; protected Image _radialImage; protected float _newPercent; /// <summary> /// On awake we grab our Image component /// </summary> protected virtual void Awake() { _radialImage = GetComponent<Image>(); } /// <summary> /// Call this method to update the fill amount based on a currentValue between minValue and maxValue /// </summary> /// <param name="currentValue">Current value.</param> /// <param name="minValue">Minimum value.</param> /// <param name="maxValue">Max value.</param> public virtual void UpdateBar(float currentValue,float minValue,float maxValue) { _newPercent = MMMaths.Remap(currentValue,minValue,maxValue,StartValue,EndValue); if (_radialImage == null) { return; } _radialImage.fillAmount = _newPercent; if (_radialImage.fillAmount > 1 - Tolerance) { _radialImage.fillAmount = 1; } if (_radialImage.fillAmount < Tolerance) { _radialImage.fillAmount = 0; } } } }