From ee032c35c49d47daba2dee1580b3abbe59d59bd8 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 01 九月 2025 16:29:46 +0800
Subject: [PATCH] 125 【战斗】战斗系统 战斗npc消失的问题处理

---
 Main/System/Battle/BattleObject/BattleObject.cs |   13 ++++
 Main/System/Battle/Skill/SkillBase.cs           |   45 ++++++++++-----
 Main/System/Battle/BattleHUDWin.cs              |   14 ----
 Main/System/Battle/BattleObject/BattleObjMgr.cs |   15 +++-
 Main/System/Battle/Skill/DirectlyHealSkill.cs   |   17 -----
 Main/System/Battle/UIComp/BattleHeroInfoBar.cs  |    1 
 Main/System/Battle/Skill/RebornSkill.cs         |    8 --
 Main/System/Battle/UIComp/BattleTips.cs         |   10 +--
 8 files changed, 59 insertions(+), 64 deletions(-)

diff --git a/Main/System/Battle/BattleHUDWin.cs b/Main/System/Battle/BattleHUDWin.cs
index 7377bc6..cb201c6 100644
--- a/Main/System/Battle/BattleHUDWin.cs
+++ b/Main/System/Battle/BattleHUDWin.cs
@@ -41,8 +41,6 @@
     {
         base.OnPreOpen();
         EventBroadcast.Instance.AddListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
-        EventBroadcast.Instance.AddListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_MOUNTED, OnBuffMounted);
-        EventBroadcast.Instance.AddListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_DISAPEAR, OnBuffDisapear);
         damagePrefabPool = GameObjectPoolManager.Instance.RequestPool(UILoader.LoadPrefab("DamageContent"));
         // buffIconPrefabPool = GameObjectPoolManager.Instance.RequestPool();
         // buffLabelPrefabPool = GameObjectPoolManager.Instance.RequestPool(ResManager.Instance.LoadAsset<GameObject>("UIComp", "BuffContent"));
@@ -52,8 +50,6 @@
     {
         base.OnPreClose();
         EventBroadcast.Instance.RemoveListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
-        EventBroadcast.Instance.RemoveListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_MOUNTED, OnBuffMounted);
-        EventBroadcast.Instance.RemoveListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_DISAPEAR, OnBuffDisapear);
     }
 
     protected override void OnOpen()
@@ -115,16 +111,6 @@
             out anchoredPos);
 
         contentRect.anchoredPosition = anchoredPos;
-    }
-
-    private void OnBuffMounted(BattleObject bo, SkillConfig buffConfig)
-    {
-        
-    }
-
-    private void OnBuffDisapear(BattleObject bo, SkillConfig buffConfig)
-    {
-
     }
 
     public void SetBattleField(BattleField _battleField)
diff --git a/Main/System/Battle/BattleObject/BattleObjMgr.cs b/Main/System/Battle/BattleObject/BattleObjMgr.cs
index d539ef7..833e788 100644
--- a/Main/System/Battle/BattleObject/BattleObjMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -110,9 +110,15 @@
         {
             if (allBattleObjDict.TryGetValue((int)objID, out BattleObject battleObj))
             {
+                if (battleObj.Camp == BattleCamp.Red)
+                {
+                    redCampDict.Remove(battleObj.teamHero.positionNum);
+                }
+                else
+                {
+                    blueCampDict.Remove(battleObj.teamHero.positionNum);
+                }
                 allBattleObjDict.Remove((int)objID);
-                redCampDict.Remove((int)objID);
-                blueCampDict.Remove((int)objID);
                 BattleObjectFactory.DestroyBattleObject((int)objID, battleObj);
             }
         }
@@ -123,10 +129,11 @@
         foreach (var item in campDict)
         {
             BattleObject battleObj = item.Value;
+            var objId = item.Key;
             if (battleObj != null)
             {
-                allBattleObjDict.Remove(battleObj.ObjID);
-                BattleObjectFactory.DestroyBattleObject(item.Key, battleObj);
+                allBattleObjDict.Remove(objId);
+                BattleObjectFactory.DestroyBattleObject(objId, battleObj);
             }
         }
         campDict.Clear();
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index bf8fbe8..f7b532a 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -246,7 +246,18 @@
         motionBase.PlayAnimation(MotionName.hit, false);
 
         //  鎵h
+        
         teamHero.curHp -= _totalDamage;
+    }
+
+    public void SuckHp(uint suckHP)
+    {
+
+    }
+
+    public void HurtByReflect(uint bounceHP)
+    {
+        
     }
 
     //  闂伩寮�濮�
@@ -367,6 +378,8 @@
 
 
 
+
+
 #if UNITY_EDITOR_STOP_USING
     public void EditorRevive()
     {
diff --git a/Main/System/Battle/Skill/DirectlyHealSkill.cs b/Main/System/Battle/Skill/DirectlyHealSkill.cs
index bf4202e..9facf9f 100644
--- a/Main/System/Battle/Skill/DirectlyHealSkill.cs
+++ b/Main/System/Battle/Skill/DirectlyHealSkill.cs
@@ -47,21 +47,4 @@
 		base.OnHitTargets(_healIndex, healList);
     }
 
-	protected override void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
-	{
-		base.OnHitEachTarget(target, totalDamage, damageList, ref hurt);
-	}
-
-
-	// //  涓憞缁撴潫
-	// protected override void OnActiveSkillFrame()
-	// {
-		
-	// }
-
-	// //	鍚庢憞缁撴潫
-	// protected override void OnEndSkillFrame()
-	// {
-
-	// }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/RebornSkill.cs b/Main/System/Battle/Skill/RebornSkill.cs
index e85c175..5443761 100644
--- a/Main/System/Battle/Skill/RebornSkill.cs
+++ b/Main/System/Battle/Skill/RebornSkill.cs
@@ -39,14 +39,6 @@
 		}
 	}
 
-	protected override void OnHitTargets(int _hitIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hitList)
-	{
-		base.OnHitTargets(_hitIndex, hitList);
-    }
 
-	protected override void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
-	{
-		base.OnHitEachTarget(target, totalDamage, damageList, ref hurt);
-	}
 
 }
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 3b9b52b..a3c580b 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -362,19 +362,40 @@
 				continue;
 			}
 
-			// 浼ゅ鍒嗗竷 (涓囧垎姣�)
-			int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
-
-			long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
-
-			// 淇濊瘉鎵�鏈夊垎閰嶉」鍔犺捣鏉ョ瓑浜巘otalDamage锛岄伩鍏嶅洜鏁撮櫎瀵艰嚧鐨勮宸�
-			List<long> damageList = BattleUtility.DivideDamageToList(damageDivide, totalDamage);
-
-			OnHitEachTarget(target, totalDamage, damageList, ref hurt);
+			OnHitEachTarget(_hitIndex, target, hurt);
 		}
 
 		HandleDead();
 	}
+
+
+	protected virtual void OnHitEachTarget(int _hitIndex, BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
+	{
+		// 浼ゅ鍒嗗竷 (涓囧垎姣�)
+		int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
+
+		long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
+
+		// 淇濊瘉鎵�鏈夊垎閰嶉」鍔犺捣鏉ョ瓑浜巘otalDamage锛岄伩鍏嶅洜鏁撮櫎瀵艰嚧鐨勮宸�
+		List<long> damageList = BattleUtility.DivideDamageToList(damageDivide, totalDamage);
+		// public uint ObjID;
+		// public uint AttackTypes;        // 椋樿绫诲瀷姹囨�伙紝鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�9-闂伩
+		// public uint HurtHP;        // 椋樿鍊硷紝姹備綑浜块儴鍒�
+		// public uint HurtHPEx;        // 椋樿鍊硷紝鏁撮櫎浜块儴鍒�
+		// public uint CurHP;        // 鏇存柊鍓╀綑琛�閲忥紝姹備綑浜块儴鍒�
+		// public uint CurHPEx;        // 鏇存柊鍓╀綑琛�閲忥紝鏁撮櫎浜块儴鍒�
+		// public uint SuckHP;        // 鏈浼ゅ杞寲鐨勫惛琛�閲�
+		// public uint BounceHP;        // 鏈浼ゅ鍙嶅脊鐨勪激瀹抽噺
+
+
+		//	TODO YYL AttackTypes  瑕佽〃鐜版垚浠�涔堟牱鍛紵 鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�9-闂伩
+		target.Hurt(damageList, totalDamage, hurt.AttackTypes);
+
+		//	TODO YYL 杩欓噷鏄鍋氱粺涓�璁$畻鍚庡啀hurt璺焥uckhp杩樻槸鎬庢牱
+		// caster.SuckHp(hurt.SuckHP);//	鍚歌
+		// caster.HurtByReflect(hurt.BounceHP);// 鍙嶅脊浼ゅ
+	}
+
 
 	protected void HandleDead()
 	{
@@ -484,12 +505,6 @@
 	}
 
 
-
-	protected virtual void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
-	{
-		target.Hurt(damageList, totalDamage, hurt.AttackTypes);
-
-	}
 
 	protected void CheckAfterDeadhPack()
 	{
diff --git a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
index 755977e..f1a37a6 100644
--- a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
+++ b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -143,6 +143,7 @@
 
     public void Run()
     {
+        // 鍊掑簭閬嶅巻 鍒犻櫎.run閲屽垹闄ゅ厓绱犱笉鍙楀奖鍝�
         for (int i = tipsList.Count - 1; i >= 0; i--)
         {
             tipsList[i].Run();
diff --git a/Main/System/Battle/UIComp/BattleTips.cs b/Main/System/Battle/UIComp/BattleTips.cs
index a16ee76..d1b8e07 100644
--- a/Main/System/Battle/UIComp/BattleTips.cs
+++ b/Main/System/Battle/UIComp/BattleTips.cs
@@ -10,12 +10,7 @@
     public float showTime = 0.4f;
     public float timer = 0f;
 
-    protected RectTransform rectTransform;
-
-    void Awake()
-    {
-        rectTransform = gameObject.AddMissingComponent<RectTransform>();
-    }
+    public RectTransform rectTransform;
 
     public Text tipText;
 
@@ -33,6 +28,9 @@
     //  涓嶈浣跨敤update
     public void Run()
     {
+        if (!gameObject.activeSelf)
+            return;
+
         if (timer >= showTime)
         {
             OnFinish?.Invoke();

--
Gitblit v1.8.0