hch
2025-08-05 6d9a990ce3eff793946d7b43e9b48e4f7045c20e
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;
@@ -115,13 +113,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>
    /// 剩余时间
@@ -377,15 +375,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 +405,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.#");
        }
    }
@@ -517,10 +515,10 @@
    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_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(187, 187, 187, 255);  //bbbbbb
    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
@@ -594,6 +592,14 @@
    //     return name;
    // }
    //物品 各功能品质
    public static Color GetUIColorByFunc(int itemColor, bool bright = false)
    {
        return GetUIColor(itemColor + 1, bright);
    }
    //对应品质(树);物品 各功能品质从2开始 用GetUIColorByFunc
    public static Color GetUIColor(int itemColor, bool bright = false)
    {
        switch (itemColor)
@@ -623,7 +629,7 @@
            case 11:
                return GetUIColor(TextColType.itembuxiu, bright);
            case 12:
                return GetUIColor(TextColType.itemyonghen, bright);
                return GetUIColor(TextColType.itemyonghen, bright);
        }
@@ -638,12 +644,10 @@
            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:
@@ -656,6 +660,8 @@
                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:
@@ -701,76 +707,87 @@
        return bright ? s_BrightWhiteColor : s_DarkWhiteColor;
    }
    //对应品质(树);物品 各功能品质从2开始 用GetUIOutlineColorByFunc
    public static Color GetUIOutlineColor(int quality)
    {
        return GetUIOutlineColor((QualityTextColType)quality);
    }
    //描边颜色,对应品质
    //物品 各功能品质
    public static Color GetUIOutlineColorByFunc(int quality)
    {
        return GetUIOutlineColor((QualityTextColType)(quality + 1));
    }
    //描边颜色,对应品质(树)
    public static Color GetUIOutlineColor(QualityTextColType type)
    {
        switch (type)
        {
            case QualityTextColType.itemcucao:
                // 2d2d2d 粗糙
                return new Color32(45, 45, 45, 255);
                return new Color32(45, 45, 45, 128);
            case QualityTextColType.itemputong:
                // 424242 普通
                return new Color32(66, 66, 66, 255);
                return new Color32(66, 66, 66, 128);
            case QualityTextColType.itemjingliang:
                // 172543 精良
                return new Color32(23, 37, 67, 255);
                return new Color32(23, 37, 67, 128);
            case QualityTextColType.itemxiyou:
                // 2a0f30 稀有
                return new Color32(42, 15, 48, 255);
                return new Color32(42, 15, 48, 128);
            case QualityTextColType.itemshishi:
                // 4a2f00 史诗
                return new Color32(74, 47, 0, 255);
                return new Color32(74, 47, 0, 128);
            case QualityTextColType.itemchuanqi:
                // 451800 传奇
                return new Color32(69, 24, 0, 255);
                return new Color32(69, 24, 0, 128);
            case QualityTextColType.itemshenhua:
                // 510000 神话
                return new Color32(81, 0, 0, 255);
                return new Color32(81, 0, 0, 128);
            case QualityTextColType.itemwuxia:
                // 43003e 无瑕
                return new Color32(67, 0, 62, 255);
                return new Color32(67, 0, 62, 128);
            case QualityTextColType.itemanjin:
                // 6f4401 暗金
                return new Color32(111, 68, 1, 255);
                return new Color32(111, 68, 1, 128);
            case QualityTextColType.itemjueyi:
                // 203995 绝艺
                return new Color32(32, 57, 149, 255);
                return new Color32(32, 57, 149, 128);
            case QualityTextColType.itemyuanzu:
                // 461f5d 元祖
                return new Color32(70, 31, 93, 255);
                return new Color32(70, 31, 93, 128);
            case QualityTextColType.itembuxiu:
                // 2e3975 不朽
                return new Color32(46, 57, 117, 255);
                return new Color32(46, 57, 117, 128);
            case QualityTextColType.itemyonghen:
                // 5d1d52 永恒
                return new Color32(93, 29, 82, 255);
                return new Color32(93, 29, 82, 128);
            case QualityTextColType.red:
                return s_BrightRedColor;
        }
        return new Color32(0, 0, 0, 255);
        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 = false)
    {
        if (m_TextColorRegex.IsMatch(msg) && msg.ToLower().StartsWith("<color=#")
            && msg.ToLower().EndsWith("</color>"))
        {
            Match match = m_TextColorRegex.Match(msg);
            msg = match.Groups[1].Value;
        }
        // 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>");
            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 ? "ea261e" : "ea261e", ">", msg, "</color>");
            case TextColType.Pink:
@@ -788,7 +805,11 @@
            case TextColType.LightGreen:
                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>");
        }
        return msg;
    }
@@ -854,28 +875,37 @@
    {
        switch (itemColor)
        {
            case 0:
                return AppendColor(TextColType.Gray, msg, bright);
            case 1:
                return AppendColor(TextColType.White, msg, bright);
            case 2:
                return AppendColor(TextColType.Blue, msg, bright);
                return AppendColor(TextColType.itemjingliang, msg, bright);
            case 3:
                return AppendColor(TextColType.Purple, msg, bright);
                return AppendColor(TextColType.itemxiyou, msg, bright);
            case 4:
                return AppendColor(TextColType.Orange, msg, bright);
                return AppendColor(TextColType.itemshishi, msg, bright);
            case 5:
                return AppendColor(TextColType.Red, msg, bright);
                return AppendColor(TextColType.itemchuanqi, msg, bright);
            case 6:
                return AppendColor(TextColType.itemshenhua, msg, bright);
            case 7:
                return AppendColor(TextColType.itemwuxia, msg, bright);
            case 8:
                return AppendColor(TextColType.Pink, msg, bright);
                return AppendColor(TextColType.itemanjin, msg, bright);
            case 9:
                return AppendColor(TextColType.Green, msg, bright);
                return AppendColor(TextColType.itemjueyi, msg, bright);
            case 10:
                return AppendColor(TextColType.itemyuanzu, msg, bright);
            case 11:
                return AppendColor(TextColType.itembuxiu, msg, bright);
            case 12:
                return AppendColor(TextColType.itemyonghen, msg, bright);
        }
        return msg;
    }
    public static Color GetPropertyColor(int property)
    {
@@ -1193,6 +1223,11 @@
                    //幻境阁积分
                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default43);
                }
            case 51:
                {
                    //武将招募积分
                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default44);
                }
            case 98:
                {
                    //过期型代金券