using System.Collections.Generic;
using UnityEngine;
namespace XCharts.Runtime
{
    /// 
    /// 多样式数值。
    /// 
    [Since("v3.8.0")]
    [System.Serializable]
    public class MLValue : ChildComponent
    {
        /// 
        /// the type of value.
        /// ||数值类型。
        /// 
        public enum Type
        {
            /// 
            /// Percent value form.
            /// ||百分比形式。
            /// 
            Percent,
            /// 
            /// Absolute value form.
            /// ||绝对值形式。
            /// 
            Absolute,
            /// 
            /// Extra value form.
            /// ||额外形式。
            /// 
            Extra
        }
        [SerializeField] private Type m_Type;
        [SerializeField] private float m_Value;
        public Type type { get { return m_Type; } set { m_Type = value; } }
        public float value { get { return m_Value; } set { m_Value = value; } }
        public MLValue(float value)
        {
            m_Type = Type.Percent;
            m_Value = value;
        }
        public MLValue(Type type, float value)
        {
            m_Type = type;
            m_Value = value;
        }
        /// 
        /// Get the value by type.
        /// ||根据类型获取值。
        /// 
        /// 默认值
        /// 
        public float GetValue(float total)
        {
            switch (m_Type)
            {
                case Type.Percent:
                    return m_Value * total;
                case Type.Absolute:
                    return m_Value;
                case Type.Extra:
                    return total + m_Value;
                default: return 0;
            }
        }
    }
}