From 93aba7a5b556606bf7a31ccc3c199d63f4fff28b Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 13 十一月 2025 09:27:53 +0800
Subject: [PATCH] 125 战斗 特性怒气飘字

---
 Main/System/Battle/BattleObject/BattleObject.cs |  110 +++++++++++++++++++++++++++++++++++++++++-------------
 Main/System/Battle/UIComp/BattleHeroInfoBar.cs  |    6 ++
 2 files changed, 88 insertions(+), 28 deletions(-)

diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index 723bb12..8bfa3e9 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -195,33 +195,33 @@
         }
     }
 
-    public void ObjPropertyRefreshView(HB418_tagSCObjPropertyRefreshView vNetData)
-    {
-        // 澶╁瓙鐨勬寫鎴樻嫤鎴鏉�,涓嶆嫤鎴�掓皵
-        BattleObject boss = battleField.FindBoss();
-        if (boss != null && battleField.MapID == 30020 && boss.ObjID == vNetData.ObjID && vNetData.RefreshType != (ushort)PlayerDataType.XP)
-            return;
-        switch ((PlayerDataType)vNetData.RefreshType)
-        {
-            case PlayerDataType.HP:
-                long toHp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
-                heroInfoBar.UpdateHP(teamHero.curHp, toHp, teamHero.maxHp, false);
-                teamHero.curHp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
-                break;
-            case PlayerDataType.MaxHP:
-                teamHero.maxHp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
-                heroInfoBar.UpdateHP(teamHero.curHp, teamHero.curHp, teamHero.maxHp, false);
-                break;
-            case PlayerDataType.XP:
-                long toXp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
-                heroInfoBar.UpdateXP(teamHero.rage, toXp, 100);
-                teamHero.rage = (int)GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
-                break;
-            default:
-                Debug.LogError("BattleObject.ObjPropertyRefreshView 鍑虹幇鎰忓绫诲瀷 " + vNetData.RefreshType.ToString());
-                break;
-        }
-    }
+    // public void ObjPropertyRefreshView(HB418_tagSCObjPropertyRefreshView vNetData)
+    // {
+    //     // 澶╁瓙鐨勬寫鎴樻嫤鎴鏉�,涓嶆嫤鎴�掓皵
+    //     BattleObject boss = battleField.FindBoss();
+    //     if (boss != null && battleField.MapID == 30020 && boss.ObjID == vNetData.ObjID && vNetData.RefreshType != (ushort)PlayerDataType.XP)
+    //         return;
+    //     switch ((PlayerDataType)vNetData.RefreshType)
+    //     {
+    //         case PlayerDataType.HP:
+    //             long toHp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
+    //             heroInfoBar.UpdateHP(teamHero.curHp, toHp, teamHero.maxHp, false);
+    //             teamHero.curHp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
+    //             break;
+    //         case PlayerDataType.MaxHP:
+    //             teamHero.maxHp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
+    //             heroInfoBar.UpdateHP(teamHero.curHp, teamHero.curHp, teamHero.maxHp, false);
+    //             break;
+    //         case PlayerDataType.XP:
+    //             long toXp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
+    //             heroInfoBar.UpdateXP(teamHero.rage, toXp, 100);
+    //             teamHero.rage = (int)GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
+    //             break;
+    //         default:
+    //             Debug.LogError("BattleObject.ObjPropertyRefreshView 鍑虹幇鎰忓绫诲瀷 " + vNetData.RefreshType.ToString());
+    //             break;
+    //     }
+    // }
 
     //  鐪╂檿
     public bool IsStunned()
@@ -513,6 +513,62 @@
         heroInfoBar.SetSpeedRatio(ratio);
     }
 
+    public void OnObjPropertyRefreshView(HB418_tagSCObjPropertyRefreshView vNetData)
+    {
+        // 澶╁瓙鐨勬寫鎴樻嫤鎴鏉�,涓嶆嫤鎴�掓皵
+        BattleObject boss = battleField.FindBoss();
+        if (boss != null && battleField.MapID == 30020 && boss.ObjID == vNetData.ObjID && vNetData.RefreshType != (ushort)PlayerDataType.XP)
+            return;
+
+        // public uint ObjID;
+        // public ushort RefreshType;    // 鍚�0418鍒锋柊绫诲瀷锛屽琛�閲忋�佹�掓皵
+        // public uint AttackTypes;    // 椋樺瓧绫诲瀷姹囨�伙紝鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�9-闂伩
+        // public uint Value;    // 鏇存柊鍊�
+        // public uint ValueEx;    // 鏇存柊鍊硷紝濡傛灉鏄ぇ鏁板�肩殑姝ゅ�间负鏁撮櫎浜块儴鍒�
+        // public byte DiffType;    // 鍙樺寲绫诲瀷锛�0-鍑忓皯锛�1-澧炲姞
+        // public uint DiffValue;    // 鍙樺寲鍊�
+        // public uint DiffValueEx;    // 鍙樺寲鍊硷紝濡傛灉鏄ぇ鏁板�肩殑姝ゅ�间负鏁撮櫎浜块儴鍒�
+        // public uint SkillID;    // 浣跨敤鐨勬妧鑳借〃ID
+        // public uint RelatedSkillID;    // 鍏宠仈鐨勬妧鑳絀D锛屼竴鑸槸涓绘妧鑳絀D锛岄潪涓绘妧鑳介澶栬Е鍙戠殑涓�0
+
+        long diffValue = GeneralDefine.GetFactValue(vNetData.DiffValue, vNetData.DiffValueEx);
+        diffValue *= vNetData.DiffType == 0 ? -1 : 1;
+
+        long newValue = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
+
+
+        switch ((PlayerDataType)vNetData.RefreshType)
+        {
+            case PlayerDataType.HP:
+                long toHp = GeneralDefine.GetFactValue(vNetData.Value, vNetData.ValueEx);
+                heroInfoBar.UpdateHP(teamHero.curHp, toHp, teamHero.maxHp, true);
+                teamHero.curHp = newValue;
+                break;
+            case PlayerDataType.MaxHP:
+                teamHero.maxHp = newValue;
+                heroInfoBar.UpdateHP(teamHero.curHp, teamHero.curHp, teamHero.maxHp, true);
+                break;
+            case PlayerDataType.XP:
+                long toXp = newValue;
+                heroInfoBar.UpdateXP(teamHero.rage, toXp, 100);
+                teamHero.rage = (int)newValue;
+
+                string message = BattleUtility.DisplayDamageNum(diffValue, ((int)DamageType.RageUp));
+
+                heroInfoBar.ShowTips(new BattleHeroInfoBar.TipsInfo()
+                {
+                    message = message,
+                    useArtText = true,
+                    followCharacter = true,
+                    isRage = true
+                });
+                break;
+            default:
+                Debug.LogError("BattleObject.ObjPropertyRefreshView 鍑虹幇鎰忓绫诲瀷 " + vNetData.RefreshType.ToString());
+                break;
+        }
+    }
+
 
 #if UNITY_EDITOR_STOP_USING
     public void EditorRevive()
diff --git a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
index 13400ff..f1c7851 100644
--- a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
+++ b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -22,6 +22,8 @@
         public bool showBackground = false;
         public bool useBuffColor = false;  // 鏄惁浣跨敤 Buff 棰滆壊锛堜粠 FloatingConfig 璇诲彇锛�
         public bool isDebuff = false;      // 鏄惁鏄礋鍚� Buff锛堝喅瀹氱敤鍝釜棰滆壊锛�
+
+        public bool isRage = false;
     }
     
     /// <summary>
@@ -53,6 +55,8 @@
     public FloatingConfig followFloatingConfig;
     [Tooltip("涓嶈窡闅忚鑹茬殑椋樺瓧閰嶇疆锛堝浐瀹氬湪鎴樺満鑺傜偣锛�")]
     public FloatingConfig noFollowFloatingConfig;
+
+    public FloatingConfig rageFloatingConfig;
     
     protected BattleObject battleObject;
     
@@ -486,7 +490,7 @@
     /// </summary>
     private void ConfigureTips(BattleTips tips, TipsInfo tipsInfo)
     {
-        FloatingConfig targetConfig = tipsInfo.followCharacter 
+        FloatingConfig targetConfig = tipsInfo.isRage ? rageFloatingConfig : tipsInfo.followCharacter 
             ? followFloatingConfig 
             : noFollowFloatingConfig;
         

--
Gitblit v1.8.0