From 8f983d0dab26becb6b85dbbb616fde21c3ad8f02 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 20 八月 2025 18:40:23 +0800
Subject: [PATCH] 125 【战斗】战斗系统

---
 Main/System/Battle/BattleUtility.cs |  103 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 93 insertions(+), 10 deletions(-)

diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index f3ecdbc..a16cf6e 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -12,21 +12,27 @@
 
     public static TweenerCore<Vector2, Vector2, DG.Tweening.Plugins.Options.VectorOptions> MoveToTarget(RectTransform transform, RectTransform target, Vector2 offset, float duration, Action onComplete = null)
     {
-        Vector3 targetWorldPos = target.TransformPoint(target.anchoredPosition + offset);
+        // 1. 鑾峰彇鐩爣鐨勬渶缁� anchoredPosition锛堝姞涓� offset锛�
+        Vector2 targetAnchoredPos = target.anchoredPosition + offset;
+        Vector3 worldAnchorPos = target.TransformPoint(targetAnchoredPos);
 
-        RectTransform parentRect = transform.parent as RectTransform;
 
-        Vector2 targetAnchoredPos;
+        // 杞崲 target 鐨� anchoredPosition 鍒� sourceParent 鐨勫潗鏍囩郴
+        Vector2 localPoint;
         RectTransformUtility.ScreenPointToLocalPointInRectangle(
-            parentRect,
-            RectTransformUtility.WorldToScreenPoint(null, targetWorldPos),
-            null,
-            out targetAnchoredPos);
+            transform,
+            RectTransformUtility.WorldToScreenPoint(CameraManager.uiCamera, worldAnchorPos),
+            CameraManager.uiCamera,
+            out localPoint);
 
         // 3. DOTween 绉诲姩
-        return transform.DOAnchorPos(targetAnchoredPos, duration)
-            .SetEase(Ease.Linear)
-            .OnComplete(() => onComplete?.Invoke());
+        var tween = transform.DOAnchorPos(localPoint, duration).SetEase(Ease.Linear);
+        tween.onComplete += () =>
+        {
+            onComplete?.Invoke();
+        };
+
+        return tween;
     }
 
     public static string DisplayDamageNum(long num, int attackType)
@@ -75,4 +81,81 @@
         return config.nums[_num - 48];
     }
 
+    /// <summary>
+    /// 淇濊瘉鎵�鏈夊垎閰嶉」鍔犺捣鏉ョ瓑浜巘otalDamage锛岄伩鍏嶅洜鏁撮櫎瀵艰嚧鐨勮宸�
+    /// </summary>
+    public static List<long> DivideDamageToList(int[] damageDivide, long totalDamage)
+    {
+        List<long> fixedDamageList = new List<long>();
+        long assigned = 0;
+        int count = damageDivide.Length;
+
+        for (int i = 0; i < count; i++)
+        {
+            long damage;
+            if (i == count - 1)
+            {
+                // 鏈�鍚庝竴涓垎閰嶉」淇涓哄墿浣�
+                damage = totalDamage - assigned;
+            }
+            else
+            {
+                damage = (totalDamage * damageDivide[i] + 5000) / 10000; // 鍥涜垗浜斿叆
+                assigned += damage;
+            }
+            fixedDamageList.Add(damage);
+        }
+        return fixedDamageList;
+    }
+
+    public static List<HB422_tagMCTurnFightObjDead> FindDeadPack(List<GameNetPackBasic> packList)
+    {
+        List<HB422_tagMCTurnFightObjDead> deadPacks = new List<HB422_tagMCTurnFightObjDead>();
+        for (int i = 0; i < packList.Count; i++)
+        {
+            var pack = packList[i];
+            //	瀵绘壘姝讳骸鍖� 鎵惧埌姝讳骸鍖呬箣鍚庤鎵炬帀钀藉寘 涓嶈兘瓒呰繃鎶�鑳藉寘
+            if (pack is HB422_tagMCTurnFightObjDead)
+            {
+                var deadPack = pack as HB422_tagMCTurnFightObjDead;
+                deadPacks.Add(deadPack);
+            }
+            else if (pack is CustomHB426CombinePack)
+            {
+                //	鎵炬浜″寘涓嶈瓒婅繃鎶�鑳藉寘
+                var combinePack = pack as CustomHB426CombinePack;
+                if (combinePack.startTag.Tag.StartsWith("Skill_"))
+                {
+                    break;
+                }
+            }
+        }
+        return deadPacks;
+    }
+
+
+    public static List<HB423_tagMCTurnFightObjReborn> FindRebornPack(List<GameNetPackBasic> packList)
+    {
+        List<HB423_tagMCTurnFightObjReborn> rebornPack = new List<HB423_tagMCTurnFightObjReborn>();
+        for (int i = 0; i < packList.Count; i++)
+        {
+            var pack = packList[i];
+            //	瀵绘壘姝讳骸鍖� 鎵惧埌姝讳骸鍖呬箣鍚庤鎵炬帀钀藉寘 涓嶈兘瓒呰繃鎶�鑳藉寘
+            if (pack is HB423_tagMCTurnFightObjReborn)
+            {
+                var deadPack = pack as HB423_tagMCTurnFightObjReborn;
+                rebornPack.Add(deadPack);
+            }
+            else if (pack is CustomHB426CombinePack)
+            {
+                //	鎵炬浜″寘涓嶈瓒婅繃鎶�鑳藉寘
+                var combinePack = pack as CustomHB426CombinePack;
+                if (combinePack.startTag.Tag.StartsWith("Skill_"))
+                {
+                    break;
+                }
+            }
+        }
+        return rebornPack;
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0