using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using System.Text.RegularExpressions; 
 | 
  
 | 
public partial class PlayerPropertyConfig : ConfigBase<int, PlayerPropertyConfig> 
 | 
{ 
 | 
    private static Dictionary<int, List<PlayerPropertyConfig>> m_PropCfgs = new Dictionary<int, List<PlayerPropertyConfig>>(); 
 | 
    private static Dictionary<int, List<int>> outputDict = new Dictionary<int, List<int>>(); 
 | 
  
 | 
    public static int[] baseAttrs = { 6, 7, 8 };    //攻防血 
 | 
    public static int[] basePerAttrs = { 16, 17, 18 };    //攻防血 百分比 
 | 
    protected override void OnConfigParseCompleted() 
 | 
    { 
 | 
        List<PlayerPropertyConfig> list = null; 
 | 
        m_PropCfgs.TryGetValue(type, out list); 
 | 
        if (list != null) 
 | 
        { 
 | 
            list.Add(this); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            list = new List<PlayerPropertyConfig>(); 
 | 
            list.Add(this); 
 | 
            m_PropCfgs.Add(type, list); 
 | 
        } 
 | 
    } 
 | 
    public static Dictionary<int, List<int>> GetShowDict() 
 | 
    { 
 | 
        if (outputDict.IsNullOrEmpty()) 
 | 
        { 
 | 
            var keys = GetKeys(); 
 | 
            for (int i = 0; i < keys.Count; i++) 
 | 
            { 
 | 
                int id = keys[i]; 
 | 
                int showType = Get(id).showType; 
 | 
                if (showType == 0)  //为0时不显示 
 | 
                    continue; 
 | 
                if (!outputDict.ContainsKey(showType)) 
 | 
                { 
 | 
                    outputDict[showType] = new List<int> { id }; 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    outputDict[showType].Add(id); 
 | 
                } 
 | 
            } 
 | 
            var outputList = outputDict.Keys.ToList(); 
 | 
            for (int i = 0; i < outputList.Count; i++) 
 | 
            { 
 | 
                int showType = outputList[i]; 
 | 
                outputDict[showType].Sort(cmp); 
 | 
            } 
 | 
        } 
 | 
        return outputDict; 
 | 
    } 
 | 
  
 | 
    static int cmp(int id1, int id2) 
 | 
    { 
 | 
        var config1 = Get(id1); 
 | 
        var config2 = Get(id2); 
 | 
  
 | 
        return config1.showSequence.CompareTo(config2.showSequence); 
 | 
    } 
 | 
  
 | 
    public static List<PlayerPropertyConfig> GetPropByType(int type) 
 | 
    { 
 | 
        List<PlayerPropertyConfig> list = null; 
 | 
        m_PropCfgs.TryGetValue(type, out list); 
 | 
        return list; 
 | 
    } 
 | 
  
 | 
  
 | 
    public static string GetFullDescription(Int2 property) 
 | 
    { 
 | 
        return GetFullDescription(property.x, property.y); 
 | 
    } 
 | 
  
 | 
    public static string GetFullDescription(int id, long value, string format="{0}+{1}") 
 | 
    { 
 | 
        var config = Get(id); 
 | 
        if (config == null) 
 | 
        { 
 | 
            return string.Empty; 
 | 
        } 
 | 
  
 | 
        if (config.ShowName.Contains("%s")) 
 | 
        { 
 | 
            // if (id == 52) 
 | 
            // { 
 | 
            //     return Regex.Replace(config.ShowName, "%s", (value * 0.0001f).ToString("f2")); 
 | 
            // } 
 | 
            // else 
 | 
            { 
 | 
                return Regex.Replace(config.ShowName, "%s", value.ToString()); 
 | 
            } 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            return string.Format(format, config.ShowName, GetValueDescription(id, value)); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static string GetValueDescription(int id, long value) 
 | 
    { 
 | 
        return GetValueDescription(id, value, false); 
 | 
    } 
 | 
  
 | 
    public static string GetValueDescription(int id, long value, bool largeValue) 
 | 
    { 
 | 
        var config = Get(id); 
 | 
        if (config == null) 
 | 
        { 
 | 
            return string.Empty; 
 | 
        } 
 | 
  
 | 
        double result = 0f; 
 | 
        if (config.ISPercentage == 0) 
 | 
        { 
 | 
            result = value; 
 | 
        } 
 | 
        else if (config.ISPercentage == 1) 
 | 
        { 
 | 
            result = (double)Math.Round(value / 100f, config.decimalCount); 
 | 
        } 
 | 
        else if (config.ISPercentage == 2) 
 | 
        { 
 | 
            result = (double)Math.Round(value / 100f, config.decimalCount); 
 | 
        } 
 | 
  
 | 
        var label = string.Empty; 
 | 
        if (largeValue) 
 | 
        { 
 | 
            label = UIHelper.ReplaceLargeNum(result); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            label = result.ToString(); 
 | 
        } 
 | 
  
 | 
        return config.ISPercentage == 1 ? (label + "%") : label; 
 | 
    } 
 | 
} 
 |