yyl
2025-08-25 cec8b67d82c2c2c1662d55c818c4a46bcc0487db
Main/Utility/UIHelper.cs
@@ -2,8 +2,6 @@
using System.Text;
using UnityEngine;
using System.Linq;
using System.Xml.Linq;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
@@ -82,6 +80,11 @@
        _image.SetSprite(iconKey);
    }
    public static string GetIconNameWithMoneyType(int moneyType)
    {
        return StringUtility.Contact("Money_Type_", moneyType);
    }
    /// <summary>
    /// 分离字符串插入空格
    /// </summary>
@@ -115,13 +118,13 @@
    }
    // 基于itemColor 下,ColorEx做二级区分
    public static void SetItemBackGround(this Image _image, int itemColor, int ColorEx = 0)
    public static void SetItemBackGround(this Image _image, int itemColor)
    {
        if (_image == null)
        {
            return;
        }
        _image.SetSprite(string.Format("Common_Public_ItemColor{0}{1}", itemColor, ColorEx));
        _image.SetSprite($"ItemBG{itemColor}");
    }
    /// <summary>
    /// 剩余时间
@@ -369,7 +372,7 @@
        if (num >= T)
        {
            return  StringUtility.Contact(numto2Decimals(num / T).ToString("0.##"), Language.Get("L1070_0"));
            return StringUtility.Contact(numto2Decimals(num / T).ToString("0.##"), Language.Get("L1070_0"));
        }
        else if (num >= B)
        {
@@ -377,15 +380,15 @@
        }
        else if (num >= M)
        {
            return StringUtility.Contact(numto2Decimals(num / M).ToString("0.##"), Language.Get("L1070"));
            return StringUtility.Contact(numto2Decimals(num / M).ToString("0.#"), Language.Get("L1070"));
        }
        else if (num >= K)
        {
            return StringUtility.Contact(numto2Decimals(num / K).ToString("0.##"), Language.Get("L1071"));
            return StringUtility.Contact(numto2Decimals(num / K).ToString("0.#"), Language.Get("L1071"));
        }
        else
        {
            return numto2Decimals(num).ToString("0.##");
            return numto2Decimals(num).ToString("0.#");
        }
    }
@@ -407,15 +410,15 @@
        }
        else if (num >= M)
        {
            return StringUtility.Contact(numto2Decimals(num / M).ToString("0.##"),"m");
            return StringUtility.Contact(numto2Decimals(num / M).ToString("0.#"), "m");
        }
        else if (num >= K)
        {
            return StringUtility.Contact(numto2Decimals(num / K).ToString("0.##"), "k");
            return StringUtility.Contact(numto2Decimals(num / K).ToString("0.#"), "k");
        }
        else
        {
            return numto2Decimals(num).ToString("0.##");
            return numto2Decimals(num).ToString("0.#");
        }
    }
@@ -498,29 +501,29 @@
    #endregion
    #region 文字色值
    #region 文字色值 Bright 和 Dark指背景色系是明还是暗,暗底亮字,亮底暗字的规则
    public static readonly Color s_BrightPinkColor = new Color32(246, 64, 141, 255);
    public static readonly Color s_BrightRedColor = new Color32(255, 3, 3, 255);
    public static readonly Color s_BrightRedColor = new Color32(234, 38, 30, 255);
    public static readonly Color s_BrightPurpleColor = new Color32(218, 72, 213, 255);
    public static readonly Color s_BrightBlueColor = new Color32(0, 107, 227, 255); //006BE3FF
    public static readonly Color s_BrightOrangeColor = new Color32(255, 103, 1, 255); //FF6701FF
    public static readonly Color s_BrightWhiteColor = new Color32(104, 104, 104, 255); //686868
    public static readonly Color s_BrightGreenColor = new Color32(16, 157, 6, 255); //109d06
    public static readonly Color s_BrightWhiteColor = new Color32(255, 255, 255, 255);    //ffffff //new Color32(104, 104, 104, 255); //686868
    public static readonly Color s_BrightGreenColor = new Color32(36, 139, 18, 255); //248b12
    public static readonly Color s_DarkPinkColor = new Color32(255, 124, 124, 255);
    public static readonly Color s_DarkRedColor = new Color32(250, 1, 1, 255);
    public static readonly Color s_DarkRedColor = new Color32(234, 38, 30, 255);
    public static readonly Color s_DarkPurpleColor = new Color32(236, 75, 246, 255);
    public static readonly Color s_DarkBlueColor = new Color32(49, 206, 251, 255);//31cefb
    public static readonly Color s_DarkOrangeColor = new Color32(248, 152, 59, 255);
    public static readonly Color s_DarkWhiteColor = new Color32(247, 247, 247, 255);
    public static readonly Color s_DarkGreenColor = new Color32(53, 225, 34, 255); //35e122
    public static readonly Color s_DarkWhiteColor = new Color32(255, 255, 255, 255);    //ffffff
    public static readonly Color s_DarkGreenColor = new Color32(42, 227, 55, 255);//2ae337
    public static readonly Color s_NavyBrown = new Color32(64, 28, 6, 255);//401c06
    public static readonly Color s_NavyBrown = new Color32(110, 76, 49, 255);//6e4c31
    public static readonly Color s_Black = new Color32(0, 0, 0, 255);
    public static readonly Color s_NavyYellow = new Color32(255, 239, 71, 255);
    public static readonly Color s_LightGreen = new Color32(141, 220, 17, 255);//8ddc11
    public static readonly Color s_LightYellow = new Color32(255, 244, 205, 255); //fff4cd
    public static readonly Color s_Gray = new Color32(204, 204, 204, 255);
    public static readonly Color s_NavyYellow = new Color32(242, 238, 2, 255); //f2ee02
    public static readonly Color s_LightGreen = new Color32(42, 227, 55, 255);//2ae337
    public static readonly Color s_LightWhite = new Color32(245, 246, 230, 255); //f5f6e6
    public static readonly Color s_Gray = new Color32(132, 121, 123, 255);  //84797b
    public static readonly Color s_Gold = new Color32(255, 239, 71, 255);//ffef47
    public static readonly Color s_EarthYellow = new Color32(248, 152, 59, 255);//f8983b
@@ -540,7 +543,7 @@
    public static readonly Color s_GrayDanLV5 = new Color32(255, 0, 0, 255); //ff0000
    public static readonly Color s_GrayDanLV6 = new Color32(240, 0, 255, 255); //f000ff
    // public static Color GetDanLVColor(int danLv, bool bright = false)
    // public static Color GetDanLVColor(int danLv, bool bright = true)
    // {
    //     var crossDanLVConfig = CrossServerArenaConfig.Get(danLv);
    //     if (crossDanLVConfig != null)
@@ -566,7 +569,7 @@
    //     return Color.white;
    // }
    // public static string AppendDanLVNameColor(int danLv, bool bright = false)
    // public static string AppendDanLVNameColor(int danLv, bool bright = true)
    // {
    //     var crossDanLVConfig = CrossServerArenaConfig.Get(danLv);
    //     if (crossDanLVConfig == null)
@@ -594,45 +597,81 @@
    //     return name;
    // }
    public static Color GetUIColor(int itemColor, bool bright = false)
    //物品 各功能品质 从精良1品质 对应 3开始
    public static Color GetUIColorByFunc(int itemColor, bool bright = true)
    {
        return GetUIColor(itemColor + 2, bright);
    }
    //对应品质(树);物品 各功能品质 用GetUIColorByFunc
    public static Color GetUIColor(int itemColor, bool bright = true)
    {
        switch (itemColor)
        {
            case 0:
                return GetUIColor(TextColType.White, bright);
            case 1:
                return GetUIColor(TextColType.White, bright);
                return GetUIColor(TextColType.Gray, bright);
            case 2:
                return GetUIColor(TextColType.Blue, bright);
                return GetUIColor(TextColType.White, bright);
            case 3:
                return GetUIColor(TextColType.Purple, bright);
                return GetUIColor(TextColType.itemjingliang, bright);
            case 4:
                return GetUIColor(TextColType.Orange, bright);
                return GetUIColor(TextColType.itemxiyou, bright);
            case 5:
                return GetUIColor(TextColType.Red, bright);
                return GetUIColor(TextColType.itemshishi, bright);
            case 6:
                return GetUIColor(TextColType.itemchuanqi, bright);
            case 7:
                return GetUIColor(TextColType.itemshenhua, bright);
            case 8:
                return GetUIColor(TextColType.Pink, bright);
                return GetUIColor(TextColType.itemwuxia, bright);
            case 9:
                return GetUIColor(TextColType.Green, bright);
                return GetUIColor(TextColType.itemanjin, bright);
            case 10:
            case 11:
            case 12:
            case 13:
            case 14:
                return GetUIColor(TextColType.itemjueyi, bright);
            case 15:
            case 16:
            case 17:
            case 18:
            case 19:
                return GetUIColor(TextColType.itemyuanzu, bright);
            case 20:
            case 21:
            case 22:
            case 23:
            case 24:
                return GetUIColor(TextColType.itembuxiu, bright);
            case 25:
            case 26:
            case 27:
            case 28:
            case 29:
                return GetUIColor(TextColType.itemyonghen, bright);
        }
        return GetUIColor(TextColType.White, bright);
    }
    public static Color GetUIColor(TextColType type, bool bright = false)
    public static Color GetUIColor(TextColType type, bool bright = true)
    {
        //Bright 和 Dark指背景色系是明还是暗,暗底亮字,亮底暗字的规则
        switch (type)
        {
            case TextColType.None:
            case TextColType.White:
                return bright ? s_BrightWhiteColor : s_DarkWhiteColor;  // s_BrightWhiteColor 是亮底灰色
            case TextColType.Blue:
                return bright ? s_BrightBlueColor : s_DarkBlueColor;
            case TextColType.Purple:
                return bright ? s_BrightPurpleColor : s_DarkPurpleColor;
            case TextColType.Orange:
                return bright ? s_BrightOrangeColor : s_DarkOrangeColor;
            case TextColType.titleSelectColor:
                return new Color32(127, 65, 57, 255);
            case TextColType.titleUnSelectColor:
                return new Color32(110, 92, 96, 255);
            case TextColType.Red:
                return bright ? s_BrightRedColor : s_DarkRedColor;
            case TextColType.Pink:
@@ -645,75 +684,244 @@
                return s_BrightGreenColor;
            case TextColType.Black:
                return s_Black;
            case TextColType.lightYellow:   //浅黄色
                return new Color32(252, 237, 185, 255);
            case TextColType.NavyYellow:
                return s_NavyYellow;
            case TextColType.LightGreen:
                return s_LightGreen;
            case TextColType.LightYellow:
                return s_LightYellow;
            case TextColType.LightWhite:
                return s_LightWhite;
            case TextColType.Gray:
                return s_Gray;
            case TextColType.itemjingliang:
                // 729de4 精良
                return new Color32(114, 157, 228, 255);
            case TextColType.itemxiyou:
                // c87bfa稀有
                return new Color32(199, 123, 253, 255);
            case TextColType.itemshishi:
                // f6de56 史诗
                return new Color32(246, 222, 86, 255);
            case TextColType.itemchuanqi:
                // fe8534 传奇
                return new Color32(254, 133, 52, 255);
            case TextColType.itemshenhua:
                // fe4a47 神话
                return new Color32(254, 66, 71, 255);
            case TextColType.itemwuxia:
                // eb5ce9 无瑕
                return new Color32(235, 90, 233, 255);
            case TextColType.itemanjin:
                // f9e29f 暗金
                return new Color32(254, 181, 68, 255);
            case TextColType.itemjueyi:
                // cdfef2 绝艺
                return new Color32(205, 239, 242, 255);
            case TextColType.itemyuanzu:
                // dfbbed 元祖
                return new Color32(223, 187, 237, 255);
            case TextColType.itembuxiu:
                // 5eeff2 不朽
                return new Color32(94, 239, 242, 255);
            case TextColType.itemyonghen:
                // f5b4ea 永恒
                return new Color32(245, 180, 234, 255);
        }
        return bright ? s_BrightWhiteColor : s_DarkWhiteColor;
    }
    private static Regex m_TextColorRegex = new Regex("<color=#[0-9a-zA-Z]+>(.*)</color>", RegexOptions.Singleline);
    public static string AppendColor(TextColType type, string msg, bool bright = false)
    //对应品质(树);物品 各功能品质 用GetUIOutlineColorByFunc
    public static Color GetUIOutlineColor(int quality)
    {
        if (m_TextColorRegex.IsMatch(msg) && msg.ToLower().StartsWith("<color=#")
            && msg.ToLower().EndsWith("</color>"))
        switch (quality)
        {
            Match match = m_TextColorRegex.Match(msg);
            msg = match.Groups[1].Value;
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
                return GetUIOutlineColor((QualityTextColType)quality);
            case 10:
            case 11:
            case 12:
            case 13:
            case 14:
                return GetUIOutlineColor(QualityTextColType.itemjueyi);
            case 15:
            case 16:
            case 17:
            case 18:
            case 19:
                return GetUIOutlineColor(QualityTextColType.itemyuanzu);
            case 20:
            case 21:
            case 22:
            case 23:
            case 24:
                return GetUIOutlineColor(QualityTextColType.itembuxiu);
            case 25:
            case 26:
            case 27:
            case 28:
            case 29:
                return GetUIOutlineColor(QualityTextColType.itemyonghen);
        }
        return GetUIOutlineColor(QualityTextColType.itemputong);
    }
    //物品 各功能品质  从精良1品质 对应 3开始
    public static Color GetUIOutlineColorByFunc(int quality)
    {
        return GetUIOutlineColor((QualityTextColType)(quality + 2));
    }
    //描边颜色,对应品质(树)
    public static Color GetUIOutlineColor(QualityTextColType type)
    {
        switch (type)
        {
            case QualityTextColType.itemcucao:
                // 2d2d2d 粗糙
                return new Color32(45, 45, 45, 128);
            case QualityTextColType.itemputong:
                // 424242 普通
                return new Color32(66, 66, 66, 128);
            case QualityTextColType.itemjingliang:
                // 172543 精良
                return new Color32(23, 37, 67, 128);
            case QualityTextColType.itemxiyou:
                // 2a0f30 稀有
                return new Color32(42, 15, 48, 128);
            case QualityTextColType.itemshishi:
                // 4a2f00 史诗
                return new Color32(74, 47, 0, 128);
            case QualityTextColType.itemchuanqi:
                // 451800 传奇
                return new Color32(69, 24, 0, 128);
            case QualityTextColType.itemshenhua:
                // 510000 神话
                return new Color32(81, 0, 0, 128);
            case QualityTextColType.itemwuxia:
                // 43003e 无瑕
                return new Color32(67, 0, 62, 128);
            case QualityTextColType.itemanjin:
                // 6f4401 暗金
                return new Color32(111, 68, 1, 128);
            case QualityTextColType.itemjueyi:
                // 203995 绝艺
                return new Color32(32, 57, 149, 128);
            case QualityTextColType.itemyuanzu:
                // 461f5d 元祖
                return new Color32(70, 31, 93, 128);
            case QualityTextColType.itembuxiu:
                // 2e3975 不朽
                return new Color32(46, 57, 117, 128);
            case QualityTextColType.itemyonghen:
                // 5d1d52 永恒
                return new Color32(93, 29, 82, 128);
            case QualityTextColType.red:
                return s_BrightRedColor;
        }
        return new Color32(0, 0, 0, 128);
    }
    // private static Regex m_TextColorRegex = new Regex("<color=#[0-9a-zA-Z]+>(.*)</color>", RegexOptions.Singleline);
    public static string AppendColor(TextColType type, string msg, bool bright = true)
    {
        // if (m_TextColorRegex.IsMatch(msg) && msg.ToLower().StartsWith("<color=#")
        //     && msg.ToLower().EndsWith("</color>"))
        // {
        //     Match match = m_TextColorRegex.Match(msg);
        //     msg = match.Groups[1].Value;
        // }
        switch (type)
        {
            case TextColType.None:
            case TextColType.White:
                return StringUtility.Contact("<color=#", bright ? "686868" : "f7f7f7", ">", msg, "</color>");
            case TextColType.Blue:
                return StringUtility.Contact("<color=#", bright ? "006be3" : "31cefb", ">", msg, "</color>");
            case TextColType.Purple:
                return StringUtility.Contact("<color=#", bright ? "da48d5" : "ec4bf6", ">", msg, "</color>");
            case TextColType.Orange:
                return StringUtility.Contact("<color=#", bright ? "ff6701" : "f8983b", ">", msg, "</color>");
                return StringUtility.Contact("<color=#", bright ? "ffffff" : "ffffff", ">", msg, "</color>");
            case TextColType.titleSelectColor:
                return StringUtility.Contact("<color=#7F4139>", msg, "</color>");
            case TextColType.titleUnSelectColor:
                return StringUtility.Contact("<color=#6E5C60>", msg, "</color>");
            case TextColType.Red:
                return StringUtility.Contact("<color=#", bright ? "ff0303" : "ff0101", ">", msg, "</color>");
                return StringUtility.Contact("<color=#", bright ? "ea261e" : "ea261e", ">", msg, "</color>");
            case TextColType.Pink:
                return StringUtility.Contact("<color=#", bright ? "f6408d" : "ff7c7c", ">", msg, "</color>");
            case TextColType.Green:
                return StringUtility.Contact("<color=#", bright ? "109d06" : "35e122", ">", msg, "</color>");
                return StringUtility.Contact("<color=#", bright ? "109d06" : "2ae337", ">", msg, "</color>");
            case TextColType.NavyBrown:
                return StringUtility.Contact("<color=#", "401c06", ">", msg, "</color>");
                return StringUtility.Contact("<color=#6e4c31>", msg, "</color>");
            case TextColType.DarkGreen:
                return StringUtility.Contact("<color=#", "109d06", ">", msg, "</color>");
                return StringUtility.Contact("<color=#109d06>", msg, "</color>");
            case TextColType.Black:
                return StringUtility.Contact("<color=#", "000000", ">", msg, "</color>");
            case TextColType.LightYellow:
                return StringUtility.Contact("<color=#", "fff4cd", ">", msg, "</color>");
                return StringUtility.Contact("<color=#000000>", msg, "</color>");
            case TextColType.LightWhite:
                return StringUtility.Contact("<color=f5f646>", msg, "</color>");
            case TextColType.LightGreen:
                return StringUtility.Contact("<color=#", "8ddc11", ">", msg, "</color>");
                return StringUtility.Contact("<color=#8ddc11>", msg, "</color>");
            case TextColType.Gray:
                return StringUtility.Contact("<color=#", "686868", ">", msg, "</color>");
                return StringUtility.Contact("<color=#84797b>", msg, "</color>");
            case TextColType.lightYellow:
                return StringUtility.Contact("<color=#fcedb9>", msg, "</color>");
            case TextColType.NavyYellow:
                return StringUtility.Contact("<color=#f2ee02>", msg, "</color>");
            case TextColType.itemjingliang:
                // 729de4 精良
                return StringUtility.Contact("<color=#729de4>", msg, "</color>");
            case TextColType.itemxiyou:
                // c87bfa稀有
                return StringUtility.Contact("<color=#c87bfa>", msg, "</color>");
            case TextColType.itemshishi:
                // f6de56 史诗
                return StringUtility.Contact("<color=#f6de56>", msg, "</color>");
            case TextColType.itemchuanqi:
                // fe8534 传奇
                return StringUtility.Contact("<color=#fe8534>", msg, "</color>");
            case TextColType.itemshenhua:
                // fe4a47 神话
                return StringUtility.Contact("<color=#fe4a47>", msg, "</color>");
            case TextColType.itemwuxia:
                // eb5ce9 无瑕
                return StringUtility.Contact("<color=#eb5ce9>", msg, "</color>");
            case TextColType.itemanjin:
                // f9e29f 暗金
                return StringUtility.Contact("<color=#f9e29f>", msg, "</color>");
            case TextColType.itemjueyi:
                // cdfef2 绝艺
                return StringUtility.Contact("<color=#cdfef2>", msg, "</color>");
            case TextColType.itemyuanzu:
                // dfbbed 元祖
                return StringUtility.Contact("<color=#dfbbed>", msg, "</color>");
            case TextColType.itembuxiu:
                // 5eeff2 不朽
                return  StringUtility.Contact("<color=#5eeff2>", msg, "</color>");
            case TextColType.itemyonghen:
                // f5b4ea 永恒
                return StringUtility.Contact("<color=#f5b4ea>", msg, "</color>");
        }
        return msg;
    }
    //needName 指境界0是否需要名称
    // public static string GetRealmName(int realmLv, bool bright = false, bool needName = false)
    // {
    //     if (realmLv <= 0 && !needName)
    //     {
    //         return string.Empty;
    //     }
    //     var config = RealmConfig.Get(realmLv);
    //     if (config == null)
    //     {
    //         return string.Empty;
    //     }
    //     return GetRealmColorByLv(realmLv, config.Name, bright);
    // }
    //needName 指官职0是否需要名称
    public static string GetRealmName(int realmLv, bool bright = true, bool needName = false)
    {
        if (realmLv <= 0 && !needName)
        {
            return string.Empty;
        }
        var config = RealmConfig.Get(realmLv);
        if (config == null)
        {
            return string.Empty;
        }
        return GetRealmColorByLv(realmLv, config.Name, bright);
    }
    //strFormat附加 境界名以外的文字
    //needName 指境界0是否需要名称
@@ -731,71 +939,97 @@
    //     return GetRealmColorByLv(realmLv, string.Format(strFormat, config.Name), bright);
    // }
    // public static string GetRealmColorByLv(int realmLv, string msg, bool bright = false)
    // {
    //     var config = RealmConfig.Get(realmLv);
    //     if (config == null)
    //     {
    //         return string.Empty;
    //     }
    //     switch (config.Quality)
    //     {
    //         case 1:
    //             return StringUtility.Contact("<color=#", bright ? "666666" : "dddddd", ">", msg, "</color>");
    //         case 2:
    //             return StringUtility.Contact("<color=#", bright ? "00b337" : "66ff00", ">", msg, "</color>");
    //         case 3:
    //             return StringUtility.Contact("<color=#", bright ? "0066ff" : "00c6ff", ">", msg, "</color>");
    //         case 4:
    //             return StringUtility.Contact("<color=#", bright ? "ff00f6" : "f000ff", ">", msg, "</color>");
    //         case 5:
    //             return StringUtility.Contact("<color=#", bright ? "ff6600" : "ff9000", ">", msg, "</color>");
    //         case 6:
    //             return StringUtility.Contact("<color=#", bright ? "ff0000" : "ff0000", ">", msg, "</color>");
    //         default:
    //             return msg;
    //     }
    // }
    public static string AppendColor(int itemColor, string msg, bool bright = false)
    public static string GetRealmColorByLv(int realmLv, string msg, bool bright = true)
    {
        var config = RealmConfig.Get(realmLv);
        if (config == null)
        {
            return string.Empty;
        }
        switch (config.Quality)
        {
            case 1:
                return StringUtility.Contact("<color=#", bright ? "666666" : "dddddd", ">", msg, "</color>");
            case 2:
                return StringUtility.Contact("<color=#", bright ? "00b337" : "66ff00", ">", msg, "</color>");
            case 3:
                return StringUtility.Contact("<color=#", bright ? "0066ff" : "00c6ff", ">", msg, "</color>");
            case 4:
                return StringUtility.Contact("<color=#", bright ? "ff00f6" : "f000ff", ">", msg, "</color>");
            case 5:
                return StringUtility.Contact("<color=#", bright ? "ff6600" : "ff9000", ">", msg, "</color>");
            case 6:
                return StringUtility.Contact("<color=#", bright ? "ff0000" : "ff0000", ">", msg, "</color>");
            default:
                return msg;
        }
    }
    //物品 各功能品质  从精良1品质 对应 3开始
    /// <summary>
    /// 颜色定义根据分组处理,如普通物品的颜色精良是1开始,树和装备也是粗糙1开始,需要调整匹配
    /// </summary>
    /// <param name="itemColor"></param>
    /// <param name="msg"></param>
    /// <param name="bright"></param>
    /// <param name="colorGroupType"></param>
    /// <returns></returns>
    public static string AppendColor(int itemColor, string msg, bool bright = true, int colorGroupType = 0)
    {
        if (colorGroupType == 0)
        {
            itemColor = itemColor + 2;
        }
        switch (itemColor)
        {
            case 0:
            case 1:
                return AppendColor(TextColType.White, msg, bright);
                return AppendColor(TextColType.Gray, msg, bright);
            case 2:
                return AppendColor(TextColType.Blue, msg, bright);
                return AppendColor(TextColType.White, msg, bright);
            case 3:
                return AppendColor(TextColType.Purple, msg, bright);
                return AppendColor(TextColType.itemjingliang, msg, bright);
            case 4:
                return AppendColor(TextColType.Orange, msg, bright);
                return AppendColor(TextColType.itemxiyou, msg, bright);
            case 5:
                return AppendColor(TextColType.Red, msg, bright);
                return AppendColor(TextColType.itemshishi, msg, bright);
            case 6:
                return AppendColor(TextColType.itemchuanqi, msg, bright);
            case 7:
                return AppendColor(TextColType.itemshenhua, msg, bright);
            case 8:
                return AppendColor(TextColType.Pink, msg, bright);
                return AppendColor(TextColType.itemwuxia, msg, bright);
            case 9:
                return AppendColor(TextColType.Green, msg, bright);
                return AppendColor(TextColType.itemanjin, msg, bright);
            case 10:
            case 11:
            case 12:
            case 13:
            case 14:
                return AppendColor(TextColType.itemjueyi, msg, bright);
            case 15:
            case 16:
            case 17:
            case 18:
            case 19:
                return AppendColor(TextColType.itemyuanzu, msg, bright);
            case 20:
            case 21:
            case 22:
            case 23:
            case 24:
                return AppendColor(TextColType.itembuxiu, msg, bright);
            case 25:
            case 26:
            case 27:
            case 28:
            case 29:
                return AppendColor(TextColType.itemyonghen, msg, bright);
        }
        return msg;
    }
    // public static int GetItemColor(int _id, Dictionary<int, List<int>> _dict = null)
    // {
    //     int _itemColor = 0;
    //     var _itemCfg = ItemConfig.Get(_id);
    //     if (_itemCfg != null)
    //     {
    //         _itemColor = _itemCfg.ItemColor;
    //         if (_itemCfg.Type == 113 && _dict != null)
    //         {
    //             _itemColor = ItemLogicUtility.Instance.GetItemQuality(_itemCfg.ID, _dict);
    //         }
    //     }
    //     return _itemColor;
    // }
    public static Color GetPropertyColor(int property)
    {
@@ -816,141 +1050,7 @@
    }
    #endregion
    #region 计算战斗力
    public static readonly string FightPowerFormula = "FightpowerFormula";
    // public static int GetFightPower(Dictionary<int, int> _propertyDict)
    // {
    //     Equation.Instance.Clear();
    //     if (_propertyDict == null || _propertyDict.Count == 0)
    //     {
    //         return 0;
    //     }
    //     foreach (var _key in _propertyDict.Keys)
    //     {
    //         PlayerPropertyConfig cfg = PlayerPropertyConfig.Get(_key);
    //         if (cfg != null)
    //         {
    //             if (_key == 7)
    //             {
    //                 Equation.Instance.AddKeyValue("MinAtk", _propertyDict[_key]);
    //                 Equation.Instance.AddKeyValue("MaxAtk", _propertyDict[_key]);
    //             }
    //             else if (_key == 24)
    //             {
    //                 Equation.Instance.AddKeyValue("PetMinAtk", _propertyDict[_key]);
    //                 Equation.Instance.AddKeyValue("PetMaxAtk", _propertyDict[_key]);
    //             }
    //             else
    //             {
    //                 ulong attrValue = (ulong)_propertyDict[_key];
    //                 var fightParm = GetFightPowerParmByAttrId(_key);
    //                 if (_key == 11)
    //                 {
    //                     var playerLv = PlayerDatas.Instance.baseData.LV;
    //                     var paramConfig = FightPowerParamConfig.Get(playerLv);
    //                     Equation.Instance.AddKeyValue("AtkSpeedParameter", paramConfig.AtkSpeedParameter);
    //                 }
    //                 else
    //                 {
    //                     if (fightParm != 0)
    //                     {
    //                         attrValue = attrValue * (ulong)fightParm;
    //                     }
    //                 }
    //                 Equation.Instance.AddKeyValue(cfg.Parameter, attrValue);
    //             }
    //         }
    //     }
    //     FuncConfigConfig funcCfg = FuncConfigConfig.Get(FightPowerFormula);
    //     return Equation.Instance.Eval<int>(funcCfg.Numerical1);
    // }
    // public static int GetFightPowerParmByAttrId(int attrId)
    // {
    //     int playerLv = PlayerDatas.Instance.baseData.LV;
    //     FightPowerParamConfig paramConfig = FightPowerParamConfig.Get(playerLv);
    //     PlayerPropertyConfig cfg = PlayerPropertyConfig.Get(attrId);
    //     if (paramConfig == null || cfg == null) return 0;
    //     switch (cfg.Parameter)
    //     {
    //         case "Hit":
    //             return paramConfig.Hit;
    //         case "Miss":
    //             return paramConfig.Miss;
    //         case "IgnoreDefRate":
    //             return paramConfig.IgnoreDefRate;
    //         case "DamChanceDef":
    //             return paramConfig.DamChanceDef;
    //         case "FaintRate":
    //             return paramConfig.FaintRate;
    //         case "LuckyHitRateReduce":
    //             return paramConfig.LuckyHitRateReduce;
    //         case "SkillAtkRate":
    //             return paramConfig.SkillAtkRate;
    //         case "SkillAtkRateReduce":
    //             return paramConfig.SkillAtkRateReduce;
    //         case "DamagePerPVP":
    //             return paramConfig.DamagePerPVP;
    //         case "DamagePerPVPReduce":
    //             return paramConfig.DamagePerPVPReduce;
    //         case "DamBackPer":
    //             return paramConfig.DamBackPer;
    //         case "IgnoreDefRateReduce":
    //             return paramConfig.IgnoreDefRateReduce;
    //         case "FaintDefRate":
    //             return paramConfig.FaintDefRate;
    //         case "AtkSpeedParameter":
    //             return paramConfig.AtkSpeedParameter;
    //         case "JobAHurtAddPer":
    //             return paramConfig.JobAHurtAddPer;
    //         case "JobBHurtAddPer":
    //             return paramConfig.JobBHurtAddPer;
    //         case "JobCHurtAddPer":
    //             return paramConfig.JobCHurtAddPer;
    //         case "JobAAtkReducePer":
    //             return paramConfig.JobAAtkReducePer;
    //         case "JobBAtkReducePer":
    //             return paramConfig.JobBAtkReducePer;
    //         case "JobCAtkReducePer":
    //             return paramConfig.JobCAtkReducePer;
    //         case "SuperHitRate":
    //             return paramConfig.SuperHitRate;
    //         case "LuckyHitRate":
    //             return paramConfig.LuckyHitRate;
    //         case "SuperHitRateReduce":
    //             return paramConfig.SuperHitRateReduce;
    //         case "FinalHurtPer":
    //             return paramConfig.FinalHurtPer;
    //         case "FinalHurtReducePer":
    //             return paramConfig.FinalHurtReducePer;
    //         case "NPCHurtAddPer":
    //             return paramConfig.NPCHurtAddPer;
    //         case "NormalHurtPer":
    //             return paramConfig.NormalHurtPer;
    //         case "FabaoHurtPer":
    //             return paramConfig.FabaoHurtPer;
    //         case "AffairSpeedPer":
    //             return paramConfig.AffairSpeedPer;
    //         case "FamilyBossHurtPer":
    //             return paramConfig.FamilyBossHurtPer;
    //         case "FamilyWarHPPer":
    //             return paramConfig.FamilyWarHPPer;
    //         case "FamilyWarAtkPer":
    //             return paramConfig.FamilyWarAtkPer;
    //         case "FamilySitExpPer":
    //             return paramConfig.FamilySitExpPer;
    //         case "BossFinalHurtPer":
    //             return paramConfig.BossFinalHurtPer;
    //     }
    //     return 0;
    // }
    #endregion
    #region 得到金钱数量根据金钱类型
@@ -1070,8 +1170,13 @@
                }
            case 41:
                {
                    //符印精华
                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.RuneSplinters);
                    //战锤
                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default26);
                }
            case 42:
                {
                    //将星玉髓
                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default33);
                }
            case 43:
                {
@@ -1108,6 +1213,11 @@
                    //幻境阁积分
                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default43);
                }
            case 51:
                {
                    //武将招募积分
                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default44);
                }
            case 98:
                {
                    //过期型代金券
@@ -1127,16 +1237,25 @@
        return (int)GetMoneyCnt(98) + (int)GetMoneyCnt(99);
    }
    //显示数量, 格式n/m, 足够绿色不足红色
    public static string ShowUseMoney(int moneyType, ulong useCnt, TextColType engoughColor = TextColType.Green)
    {
        ulong cnt = GetMoneyCnt(moneyType);
        return AppendColor(useCnt <= cnt ? engoughColor : TextColType.Red, $"{ReplaceLargeNum(useCnt)}/{ReplaceLargeNum(cnt)}");
    }
    public static string ShowUseItem(PackType type, int itemId, ulong useCnt, TextColType engoughColor = TextColType.Green)
    {
        ulong cnt = PackManager.Instance.GetItemCountByID(type, itemId);
        return AppendColor(useCnt <= cnt ? engoughColor : TextColType.Red, $"{ReplaceLargeNum(useCnt)}/{ReplaceLargeNum(cnt)}");
    }
    #endregion
    #region 得到装备位对应的部位名称
    public static string GetEquipPlaceName(int place)
    #region 得到装备位或者祝福树品质名称 带颜色
    public static string GetQualityNameWithColor(int quality, string format="{0}")
    {
        if (GeneralDefine.equipPlaceNameDict.ContainsKey(place))
        {
            return GeneralDefine.equipPlaceNameDict[place];
        }
        return "";
        return AppendColor(quality, string.Format(format, Language.Get("equipQuality" + quality)), true, 1);
    }
    #endregion
@@ -1246,7 +1365,7 @@
        return count;
    }
    // public static string GetEquipSuitName(int itemId, bool bright = false)
    // public static string GetEquipSuitName(int itemId, bool bright = true)
    // {
    //     if (ItemLogicUtility.Instance.IsSuitEquip(itemId))
    //     {
@@ -1256,7 +1375,7 @@
    //     return string.Empty;
    // }
    // public static string GetItemName(int itmeId, bool bright = false)
    // public static string GetItemName(int itmeId, bool bright = true)
    // {
    //     var itemConfig = ItemConfig.Get(itmeId);
    //     if (itemConfig == null)