From 9e8aa4c81f739980802fb9dbb2f3eff06aeb8d4c Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 13 十一月 2025 16:11:50 +0800
Subject: [PATCH] 125 战斗 特性 怒气恢复

---
 Main/Utility/UIHelper.cs |  980 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 546 insertions(+), 434 deletions(-)

diff --git a/Main/Utility/UIHelper.cs b/Main/Utility/UIHelper.cs
index 14e5385..2cd0ea7 100644
--- a/Main/Utility/UIHelper.cs
+++ b/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;
 
@@ -68,18 +66,54 @@
 
 
     #region UI閫氱敤
+
+    //榛樿璐у竵鍥剧墖鐢ㄩ珮娓呯殑锛屽瘜鏂囨湰鐨勫彲浠ョ敤灏忓浘鏍囧埄浜庢帓鐗堟樉绀�
     public static void SetIconWithMoneyType(this Image _image, int moneyType)
     {
         if (_image == null) return;
-        string iconKey = StringUtility.Contact("Money_Type_", moneyType);
-        _image.SetSprite(iconKey);
+        if (GeneralDefine.MoneyDisplayModel.ContainsKey(moneyType))
+        {
+            _image.SetOrgSprite(ItemConfig.Get(GeneralDefine.MoneyDisplayModel[moneyType]).IconKey);
+        }
+        else
+        {
+            // 鏆備笉鑰冭檻瀵屾枃鏈殑鎯呭喌
+            // 涓嶉渶瑕佺墿鍝佺殑鎯呭喌琛ュ厖
+            // string iconKey = StringUtility.Contact("Money_Type_", moneyType);
+            Debug.LogError("MoneyDisplayModel 鏈厤缃揣甯佺被鍨嬶細" + moneyType);
+        }
     }
 
-    public static void SetSmallIconWithMoneyType(this Image _image, int moneyType)
+    public static string GetIconNameWithMoneyType(int moneyType)
     {
-        if (_image == null) return;
-        string iconKey = StringUtility.Contact("SmallMoney", moneyType);
-        _image.SetSprite(iconKey);
+        if (IconConfig.HasKey("MoneyType_" + moneyType))
+        {
+            //瀵屾枃鏈樉绀虹殑鎯呭喌
+            return IconConfig.Get("MoneyType_" + moneyType).sprite;
+        }
+        else if (GeneralDefine.MoneyDisplayModel.ContainsKey(moneyType))
+        {
+            return ItemConfig.Get(GeneralDefine.MoneyDisplayModel[moneyType]).IconKey;
+        }
+        else
+        {
+            Debug.LogError("MoneyDisplayModel 鏈厤缃揣甯佺被鍨嬶細" + moneyType);
+            return "";
+        }
+    }
+
+    // 閫氳繃璐у竵绫诲瀷鑾峰彇鐗╁搧ID
+    public static int GetItemIDWithMoneyType(int moneyType)
+    {
+        if (GeneralDefine.MoneyDisplayModel.ContainsKey(moneyType))
+        {
+            return GeneralDefine.MoneyDisplayModel[moneyType];
+        }
+        else
+        {
+            Debug.LogError("MoneyDisplayModel 鏈厤缃揣甯佺被鍨嬶細" + moneyType);
+            return 0;
+        }
     }
 
     /// <summary>
@@ -115,13 +149,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>
     /// 鍓╀綑鏃堕棿
@@ -162,7 +196,7 @@
 
     }
     /// <summary>
-    /// 鑾峰彇娑堥�濈殑鏃堕棿
+    /// 鑾峰彇杩囧幓鐨勬椂闂�
     /// </summary>
     /// <param name="lastTime"></param>
     /// <returns></returns>
@@ -175,166 +209,7 @@
         else if (span.TotalMinutes > 1) return Math.Floor(span.TotalMinutes) + Language.Get("L1073");
         else return 1 + Language.Get("L1073");
     }
-    /// <summary>
-    /// 鏍规嵁灞炴�ц幏鍙栫帺瀹舵暟鎹�
-    /// </summary>
-    /// <param name="type"></param>
-    /// <returns></returns>
-    public static ulong GetPropertyValue(PropertyType type)
-    {
-        switch (type)
-        {
-            case PropertyType.LV:
-                return PlayerDatas.Instance.baseData.LV;
-            case PropertyType.POWER:
-                return (ulong)PlayerDatas.Instance.baseData.STR;
-            case PropertyType.AGILITY:
-                return (ulong)PlayerDatas.Instance.baseData.PHY;
-            case PropertyType.PHYSIQUE:
-                return (ulong)PlayerDatas.Instance.baseData.CON;
-            case PropertyType.MENTALITY:
-                return (ulong)PlayerDatas.Instance.baseData.PNE;
-            case PropertyType.HP:
-                return PlayerDatas.Instance.extersion.MaxHP;
-            case PropertyType.ATK:
-                return (ulong)PlayerDatas.Instance.extersion.MAXATK;
-            case PropertyType.DEF:
-                return (ulong)PlayerDatas.Instance.extersion.DEF;
-            case PropertyType.HIT:
-                return (ulong)PlayerDatas.Instance.extersion.HIT;
-            case PropertyType.MISS:
-                return (ulong)PlayerDatas.Instance.extersion.Miss;
-            case PropertyType.ATKSPEED:
-                return (ulong)PlayerDatas.Instance.extersion.battleValEx1;
-            case PropertyType.CritChance:
-                return (ulong)PlayerDatas.Instance.extersion.SuperHitRate;
-            case PropertyType.CritHurt:
-                return (ulong)PlayerDatas.Instance.extersion.SuperHit;
-            case PropertyType.CritResis:
-                return (ulong)PlayerDatas.Instance.extersion.SuperHitReduce;
-            case PropertyType.HeartHit:
-                return (ulong)PlayerDatas.Instance.extersion.luckHitRate;
-            case PropertyType.HeartHurt:
-                return (ulong)PlayerDatas.Instance.extersion.luckHitVal;
-            case PropertyType.HeartResis:
-                return (ulong)PlayerDatas.Instance.extersion.LuckyHitRateReduce;
-            case PropertyType.SkillHurt:
-                return (ulong)PlayerDatas.Instance.extersion.SkillAtkRate;
-            case PropertyType.PVPAddHurt:
-                return (ulong)PlayerDatas.Instance.extersion.DamagePVP;
-            case PropertyType.PVPReduceHurt:
-                return PlayerDatas.Instance.GetPlayerDataByType((PlayerDataType)191);
-            case PropertyType.LifeReply:
-                return (ulong)PlayerDatas.Instance.extersion.HPRestorePer;
-            case PropertyType.HurtReflect:
-                return (ulong)PlayerDatas.Instance.extersion.DamageBackRate;
-            case PropertyType.MoveSpeed:
-                return (ulong)PlayerDatas.Instance.extersion.SpeedValue;
-            case PropertyType.PetAddHurt:
-                return (ulong)PlayerDatas.Instance.extersion.PetDamPer;
-            case PropertyType.RealHurt:
-                return (ulong)PlayerDatas.Instance.extersion.realATK;
-            case PropertyType.RealResis:
-                return (ulong)PlayerDatas.Instance.extersion.realDEF;
-            case PropertyType.DefyDef:
-                return (ulong)PlayerDatas.Instance.extersion.IgnoreDefRate;
-            case PropertyType.DefyDefResis:
-                return (ulong)PlayerDatas.Instance.extersion.IgnoreDefRateReduce;
-            case PropertyType.DefChance:
-                return (ulong)PlayerDatas.Instance.extersion.DamChanceDef;
-            case PropertyType.BloodHurt:
-                return (ulong)PlayerDatas.Instance.extersion.BleedDamage;
-            case PropertyType.AktReplyBlood:
-                return (ulong)PlayerDatas.Instance.extersion.BattleValEx2;
-            case PropertyType.Stun:
-                return (ulong)PlayerDatas.Instance.extersion.FaintRate;
-            case PropertyType.CtrlResis:
-                return (ulong)PlayerDatas.Instance.extersion.FaintDefRate;
-            case PropertyType.AddFinalHurt:
-                return (ulong)PlayerDatas.Instance.extersion.FinalHurt;
-            case PropertyType.ReduceFinalHurt:
-                return (ulong)PlayerDatas.Instance.extersion.FinalHurtReduce;
-            case PropertyType.PVPAddHurtPer:
-                return (ulong)PlayerDatas.Instance.extersion.DamagePerPVP;
-            case PropertyType.PVPReduceHurtPer:
-                return (ulong)PlayerDatas.Instance.extersion.DamagePerPVPReduce;
-            case PropertyType.DleHitChance:
-                return (ulong)PlayerDatas.Instance.extersion.ComboDamPerRate;
-            case PropertyType.DleHurt:
-                return (ulong)PlayerDatas.Instance.extersion.ComboDamPer;
-            case PropertyType.ReduceSkillHurtPercent:
-                return (ulong)PlayerDatas.Instance.extersion.skillAtkRateReduce;
-            case PropertyType.NpcHurtAddPer:
-                return (ulong)PlayerDatas.Instance.extersion.NpcHurtAddPer;
-            case PropertyType.Luck:
-                return (ulong)PlayerDatas.Instance.extersion.luckValue;
-            case PropertyType.Mater:
-                return (ulong)PlayerDatas.Instance.baseData.mater;
-            case PropertyType.Wood:
-                return (ulong)PlayerDatas.Instance.baseData.wood;
-            case PropertyType.Water:
-                return (ulong)PlayerDatas.Instance.baseData.water;
-            case PropertyType.Fire:
-                return (ulong)PlayerDatas.Instance.baseData.fire;
-            case PropertyType.Earth:
-                return (ulong)PlayerDatas.Instance.baseData.earth;
-            case PropertyType.ReduceCrit:
-                return (ulong)PlayerDatas.Instance.baseData.reduceCrit;
-            case PropertyType.ReduceHeartHurtPer:
-                return (ulong)PlayerDatas.Instance.baseData.reduceHeartHurt;
-            case PropertyType.ReduceFinalHurtPer:
-                return (ulong)PlayerDatas.Instance.baseData.reduceFinalHurt;
-            case PropertyType.AtkPercent:
-            case PropertyType.CritHurtPercent:
-            case PropertyType.DodgePercent:
-                // return (ulong)ModelCenter.Instance.GetModel<ReikiRootModel>().GetReikiPropertyValue((int)type);
-                // TODO YYL
-                return 0ul;
-            case PropertyType.SkillAddPerA:
-                return (ulong)PlayerDatas.Instance.baseData.skillAddPerA;
-            case PropertyType.SkillAddPerB:
-                return (ulong)PlayerDatas.Instance.baseData.skillAddPerB;
-            case PropertyType.SkillAddPerC:
-                return (ulong)PlayerDatas.Instance.baseData.skillAddPerC;
-            case PropertyType.SkillAddPerD:
-                return (ulong)PlayerDatas.Instance.baseData.skillAddPerD;
-            case PropertyType.SkillAddPerE:
-                return (ulong)PlayerDatas.Instance.baseData.skillAddPerE;
-            case PropertyType.SkillAddPerF:
-                return (ulong)PlayerDatas.Instance.baseData.skillAddPerF;
-            case PropertyType.SkillAddPerG:
-                return (ulong)PlayerDatas.Instance.baseData.skillAddPerG;
-            case PropertyType.SkillReducePerA:
-                return (ulong)PlayerDatas.Instance.baseData.skillReducePerA;
-            case PropertyType.SkillReducePerB:
-                return (ulong)PlayerDatas.Instance.baseData.skillReducePerB;
-            case PropertyType.SkillReducePerC:
-                return (ulong)PlayerDatas.Instance.baseData.skillReducePerC;
-            case PropertyType.SkillReducePerD:
-                return (ulong)PlayerDatas.Instance.baseData.skillReducePerD;
-            case PropertyType.SkillReducePerE:
-                return (ulong)PlayerDatas.Instance.baseData.skillReducePerE;
-            case PropertyType.SkillReducePerF:
-                return (ulong)PlayerDatas.Instance.baseData.skillReducePerF;
-            case PropertyType.SkillReducePerG:
-                return (ulong)PlayerDatas.Instance.baseData.skillReducePerG;
-            case PropertyType.ReduceSkillCDPer:
-                return (ulong)PlayerDatas.Instance.extersion.battleValEx3;
-            case PropertyType.AddFinalHurtPer:
-                return (ulong)PlayerDatas.Instance.extersion.FunalHurtPer;
-            case PropertyType.AddNormalHurt:
-                return (ulong)PlayerDatas.Instance.baseData.NormalHurt;
-            case PropertyType.AddNormalHurtPer:
-                return (ulong)PlayerDatas.Instance.baseData.NormalHurtPer;
-            case PropertyType.AddSkillHurt:
-                return (ulong)PlayerDatas.Instance.baseData.FabaoHurt;
-            case PropertyType.AddSkillHurtPer:
-                return (ulong)PlayerDatas.Instance.baseData.FabaoHurtPer;
-            case PropertyType.AddPVEHurt:
-                return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.DamagePVE);
-        }
-        return 0;
-    }
+
 
 
     /// <summary>
@@ -348,19 +223,12 @@
         return val.Replace(@"</r>", "\n");
     }
 
-    public static double numto2Decimals(double value)
-    {
-        //涓轰粈涔堣value * 1000/10 杩欎箞鍐欙紝鐗规畩鐨勬暟瀛椾細鏈夐棶棰橈紝姣斿36.80000锛屼細(int)(value * 100)琚绠椾负3679
-        //娴嬭瘯涓嬪彧鏈�30鍑犵偣8000鐨勬墠浼氳繖鏍�
-        return (int)(value * 1000 / 10) / 100.00;
-    }
 
     /// <summary>
-    /// 澶ф暟鍊艰浆鍖� 鏍煎紡 鏈�澶氫袱涓皬鏁�
+    /// 澶ф暟鍊艰浆鍖� 鏍煎紡 鏈�澶氫袱涓皬鏁� ,鍚戜笅鍙栨暣
     /// K -鍗冿紝M -鐧捐惉锛孊-鍗佸剟锛孴 -钀剟
-    /// 涓嶅洓鑸嶄簲鍏ワ紝涓嶇敤Math.Round锛屽洜涓哄綋鐜╁鍙湁23.3456,浣嗘槸Math.Round浼氭樉绀�23.35, 褰撹喘涔颁环鏍间负23.35鏃舵棤娉曡喘涔扮殑
     /// </summary>
-    public static string ReplaceLargeNum(double num)
+    public static string ReplaceLargeNum(double num, int decimalPlaces = 1)
     {
         const long K = 10000;    //鍥藉唴涓轰竾锛屾捣澶栦负鍗�
         const long M = K * 10000;
@@ -369,23 +237,23 @@
 
         if (num >= T)
         {
-            return  StringUtility.Contact(numto2Decimals(num / T).ToString("0.##"), Language.Get("L1070_0"));
+            return StringUtility.Contact(FormatWithoutRounding(num / T, 2), Language.Get("L1070_0"));
         }
         else if (num >= B)
         {
-            return StringUtility.Contact(numto2Decimals(num / B).ToString("0.##"), Language.Get("L1070_1"));
+            return StringUtility.Contact(FormatWithoutRounding(num / B, 2), Language.Get("L1070_1"));
         }
         else if (num >= M)
         {
-            return StringUtility.Contact(numto2Decimals(num / M).ToString("0.##"), Language.Get("L1070"));
+            return StringUtility.Contact(FormatWithoutRounding(num / M, decimalPlaces), Language.Get("L1070"));
         }
         else if (num >= K)
         {
-            return StringUtility.Contact(numto2Decimals(num / K).ToString("0.##"), Language.Get("L1071"));
+            return StringUtility.Contact(FormatWithoutRounding(num / K, decimalPlaces), Language.Get("L1071"));
         }
         else
         {
-            return numto2Decimals(num).ToString("0.##");
+            return FormatWithoutRounding(num, decimalPlaces);
         }
     }
 
@@ -399,25 +267,34 @@
 
         if (num >= T)
         {
-            return StringUtility.Contact(numto2Decimals(num / T).ToString("0.##"), "t");
+            return StringUtility.Contact(FormatWithoutRounding(num / T, 2), "t");
         }
         else if (num >= B)
         {
-            return StringUtility.Contact(numto2Decimals(num / B).ToString("0.##"), "b");
+            return StringUtility.Contact(FormatWithoutRounding(num / B, 2), "b");
         }
         else if (num >= M)
         {
-            return StringUtility.Contact(numto2Decimals(num / M).ToString("0.##"),"m");
+            return StringUtility.Contact(FormatWithoutRounding(num / M, 1), "m");
         }
         else if (num >= K)
         {
-            return StringUtility.Contact(numto2Decimals(num / K).ToString("0.##"), "k");
+            return StringUtility.Contact(FormatWithoutRounding(num / K, 1), "k");
         }
         else
         {
-            return numto2Decimals(num).ToString("0.##");
+            return FormatWithoutRounding(num, 1);
         }
     }
+
+    //鏍规嵁灏忔暟浣嶆暟鐩存帴鎴柇涓嶅仛鍥涜垗浜斿叆
+    public static string FormatWithoutRounding(double value, int decimalPlaces)
+    {
+        double factor = Math.Pow(10, decimalPlaces);
+        double truncated = Math.Truncate(value * factor) / factor;
+        return truncated.ToString($"0.{new string('#', decimalPlaces)}");
+    }
+
 
     // 杞寲澶ф暟鍊煎甫鍗曚綅鐨勬樉绀猴紝濡傛灉灏忎簬200000鍒欐樉绀哄師鍊硷紝鍚﹀垯鏄剧ず澶ф暟鍊�
     public static string ReplaceLargeNumEx(double num)
@@ -472,6 +349,13 @@
         return false;
     }
 
+    // 妫�鏌ュ瓧绗︿覆鏄笉鏄函鏁存暟
+    public static bool IsNumeric(string input)
+    {
+        return int.TryParse(input, out _);
+    }
+
+
     public static string GetColorNameByItemColor(int itemColor)
     {
         switch (itemColor)
@@ -498,29 +382,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(187, 187, 187, 255); //bbbbbb
     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 +424,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 +450,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 +478,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);
+    }
+
+
+    //瀵瑰簲鍝佽川(鏍�)锛涚墿鍝� 鍚勫姛鑳藉搧璐� 鐢℅etUIColorByFunc
+    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 +565,272 @@
                 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.NavyGray:
+                return new Color32(121, 121, 121, 255);
+            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)
+    //瀵瑰簲鍝佽川(鏍�)锛涚墿鍝� 鍚勫姛鑳藉搧璐� 鐢℅etUIOutlineColorByFunc
+    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_DarkRedColor;
+        }
+        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 ? "248B12" : "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=#248B12>", 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=#bbbbbb>", msg, "</color>");
+            case TextColType.NavyGray:
+                return StringUtility.Contact("<color=#797979>", 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);
-    // }
+    public static string AppendColor(Color color, string msg)
+    {
+        return StringUtility.Contact("<color=#", ColorToHexWithHash(color), ">", msg, "</color>");
+    }
+
+
+    public static string ColorToHexWithHash(Color color, bool includeAlpha = false)
+    {
+        int r = Mathf.RoundToInt(color.r * 255);
+        int g = Mathf.RoundToInt(color.g * 255);
+        int b = Mathf.RoundToInt(color.b * 255);
+        if (includeAlpha)
+        {
+            int a = Mathf.RoundToInt(color.a * 255);
+            return string.Format("{0:X2}{1:X2}{2:X2}{3:X2}", r, g, b, a);
+        }
+        else
+        {
+            return string.Format("{0:X2}{1:X2}{2:X2}", r, g, b);
+        }
+    }
+
+
+
+    //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 AppendColor(realmLv, config.Name, bright);
+    }
 
     //strFormat闄勫姞 澧冪晫鍚嶄互澶栫殑鏂囧瓧
     //needName 鎸囧鐣�0鏄惁闇�瑕佸悕绉�
@@ -731,7 +848,7 @@
     //     return GetRealmColorByLv(realmLv, string.Format(strFormat, config.Name), bright);
     // }
 
-    // public static string GetRealmColorByLv(int realmLv, string msg, bool bright = false)
+    // public static string GetRealmColorByLv(int realmLv, string msg, bool bright = true)
     // {
     //     var config = RealmConfig.Get(realmLv);
     //     if (config == null)
@@ -757,45 +874,71 @@
     //     }
     // }
 
-    public static string AppendColor(int itemColor, string msg, bool bright = false)
+    //鐗╁搧 鍚勫姛鑳藉搧璐�  浠庣簿鑹�1鍝佽川 瀵瑰簲 3寮�濮�
+    /// <summary>
+    /// 棰滆壊瀹氫箟鏍规嵁鍒嗙粍澶勭悊锛屽鏅�氱墿鍝佺殑棰滆壊绮捐壇鏄�1寮�濮嬶紝鏍戝拰瑁呭涔熸槸绮楃硻1寮�濮嬶紝闇�瑕佽皟鏁村尮閰�
+    /// </summary>
+    /// <param name="itemColor"></param>
+    /// <param name="msg"></param>
+    /// <param name="bright"></param>
+    /// <param name="colorGroupType">0 閫氱敤鍔熻兘鍝佽川鍒嗙粍绮捐壇鍒扮璇�</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 +959,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 寰楀埌閲戦挶鏁伴噺鏍规嵁閲戦挶绫诲瀷
 
@@ -983,8 +992,21 @@
         return 0;
     }
 
+    //璐у竵瀵瑰簲0418绫诲瀷
+    public static Dictionary<int, PlayerDataType> moneyTypeToPlayerDataType = new Dictionary<int, PlayerDataType>()
+    {
+        {1, PlayerDataType.Gold},
+        {2, PlayerDataType.GoldPaper},
+        {3, PlayerDataType.Silver},
+        {15, PlayerDataType.UnionLiven},
+        {41, PlayerDataType.default26},
+        {43, PlayerDataType.default34},
+        {42, PlayerDataType.default33},
+        {53, PlayerDataType.ChallengeVoucher},
+        {99, PlayerDataType.ExAttr11},
+    };
 
-    public static ulong GetMoneyCnt(int moneyType)
+    public static long GetMoneyCnt(int moneyType)
     {
         switch (moneyType)
         {
@@ -1002,7 +1024,7 @@
                 }
             case 18:
                 {
-                    return (ulong)PlayerDatas.Instance.extersion.honorValue;
+                    return PlayerDatas.Instance.extersion.honorValue;
                 }
             case 25:
                 {
@@ -1011,10 +1033,11 @@
                 }
             case 24:
                 {
-                    return (ulong)PlayerDatas.Instance.extersion.runeChip;
+                    return PlayerDatas.Instance.extersion.runeChip;
                 }
             case 15:
                 {
+                    // 鍏細璐$尞甯�
                     return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.UnionLiven);
                     //return (ulong)ModelCenter.Instance.GetModel<StoreModel>().GetTCBPlayerData(PlayerDataType.UnionLiven);
                 }
@@ -1070,12 +1093,17 @@
                 }
             case 41:
                 {
-                    //绗﹀嵃绮惧崕
-                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.RuneSplinters);
+                    //鎴橀敜
+                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default26);
+                }
+            case 42:
+                {
+                    //灏嗘槦鐜夐珦
+                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default33);
                 }
             case 43:
                 {
-                    //鍑瘉绉垎
+                    //灏嗛瓊
                     return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default34);
                 }
             case 44:
@@ -1108,6 +1136,21 @@
                     //骞诲闃佺Н鍒�
                     return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default43);
                 }
+            case 51:
+                {
+                    //姝﹀皢鎷涘嫙绉垎
+                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.default44);
+                }
+            case 52:
+                {
+                    //娣橀噾浠�
+                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.GoldRush);
+                }
+            case 53:
+                {
+                    //鎸戞垬鍑瘉
+                    return PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.ChallengeVoucher);
+                }
             case 98:
                 {
                     //杩囨湡鍨嬩唬閲戝埜
@@ -1122,21 +1165,66 @@
         return 0;
     }
 
+
     public static int GetAllVourcher()
     {
         return (int)GetMoneyCnt(98) + (int)GetMoneyCnt(99);
     }
 
+    //鏄剧ず鏁伴噺, 鏍煎紡n/m, 瓒冲缁胯壊涓嶈冻绾㈣壊
+    public static string ShowUseMoney(int moneyType, long useCnt, bool showLargeNum = false)
+    {
+        long cnt = GetMoneyCnt(moneyType);
+        if (showLargeNum)
+            return AppendColor(useCnt <= cnt ? TextColType.Green : TextColType.Red, $"{ReplaceLargeNum(cnt)}/{useCnt}");
+        else
+            return AppendColor(useCnt <= cnt ? TextColType.Green : TextColType.Red, $"{cnt}/{useCnt}");
+    }
+
+    public static string ShowUseItem(PackType type, int itemId, long useCnt, bool showLargeNum = false)
+    {
+        long cnt = PackManager.Instance.GetItemCountByID(type, itemId);
+        if (showLargeNum)
+            return AppendColor(useCnt <= cnt ? TextColType.Green : TextColType.Red, $"{ReplaceLargeNum(cnt)}/{useCnt}");
+        else
+            return AppendColor(useCnt <= cnt ? TextColType.Green : TextColType.Red, $"{cnt}/{useCnt}");
+    }
+
+
+    /// <param name="needTips">0 涓嶅搷搴� 1 寮规彁绀� 2 寮硅幏鍙栭�斿緞tips</param>
+    public static bool CheckMoneyCount(int moneyType, long needCount, int needTips = 0)
+    {
+        if (needCount <= 0)
+        {
+            return true;
+        }
+
+        long haveCount = GetMoneyCnt(moneyType);
+
+        bool isEnough = haveCount >= needCount;
+
+        if (!isEnough)
+        {
+            if (needTips == 1)
+            {
+                SysNotifyMgr.Instance.ShowTip("LackMoney", moneyType);
+            }
+            else if (needTips == 2)
+            {
+                ItemTipUtility.ShowMoneyTip(moneyType);
+            }
+        }
+
+        return isEnough;
+    }
+
+
     #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
 
@@ -1214,13 +1302,15 @@
         return content;
     }
 
+    //妫�鏌ュ悕瀛楅暱搴︼紝鐜╁鍚嶅拰鍏細鍚�
+    //涓嶅悓鍥藉闀垮害涓嶅悓锛屾帓鐗堜笉鍚�
     public static bool SatisfyNameLength(string name, out int error)
     {
         error = 0;
         //bool pureChinese = Regex.IsMatch(name, "^[\u4e00-\u9fa5]+$");
         //var chsCount = GetChsCount(name);
         int length = Encoding.Default.GetBytes(name).Length;
-        var maxlength = 20;
+        var maxlength = 21;  //绾腑鏂囦笉寤鸿瓒呰繃7涓瓧
         var minlength = 3;
         if (length > maxlength)
         {
@@ -1246,7 +1336,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 +1346,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)
@@ -1318,4 +1408,26 @@
         return money / scale;
     }
 
+
+    public static string RemoveColor(string content)
+    {
+        content = WordAnalysis.Color_Start_Regex.Replace(content, string.Empty);
+        content = WordAnalysis.Color_End_Regex.Replace(content, string.Empty);
+        return content;
+    }
+
+    //澶嶅埗鍒板壀璐存澘
+    // TODO 鏆備笉鏀寔web鍚庣画琛ュ厖
+    public static void CopyToClipboard(string text)
+    {
+        GUIUtility.systemCopyBuffer = text;
+        Debug.Log("鏂囧瓧宸插鍒跺埌鍓创鏉�: " + text);
+    }
+    
+    //鑾峰彇鍓垏鏉垮唴瀹�
+    public static string GetClipboardText()
+    {
+        return GUIUtility.systemCopyBuffer;
+    }
+    
 }

--
Gitblit v1.8.0