From 39001a600fcae2bcf27c225df8752d75fb92fef4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 31 十月 2025 11:18:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Battle/BattleUtility.cs |  166 +++++++++++++++++++++---------------------------------
 1 files changed, 65 insertions(+), 101 deletions(-)

diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index dd04a89..2f9276c 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -61,11 +61,14 @@
 
 
     public static TweenerCore<Vector2, Vector2, DG.Tweening.Plugins.Options.VectorOptions> MoveToTarget(
-        RectTransform transform, RectTransform target, Vector2 offset, Action onComplete = null, float speed = 450f)
+        RectTransform transform, RectTransform target, Vector2 offset, Action onComplete = null, float speed = 500f)
     {
+        // 鑾峰彇鐩爣鑺傜偣鐨勪笘鐣屽潗鏍囷紙閿氱偣浣嶇疆锛�
+        Vector3 worldPos = target.position;
 
-        // 鑾峰彇鐩爣鑺傜偣鐨勪笘鐣屽潗鏍囷紙涓績鐐癸級
-        Vector3 worldPos = target.TransformPoint(target.rect.center + offset);
+        // 濡傛灉闇�瑕佸姞 offset锛岄渶鑰冭檻 scale
+        Vector3 offsetWorld = target.TransformVector(offset);
+        worldPos += offsetWorld;
 
         RectTransform canvasRect = transform.parent as RectTransform;
 
@@ -77,10 +80,8 @@
             null,
             out localPoint);
 
-        // 鍒涘缓RawImage
         float distance = Vector2.Distance(transform.anchoredPosition, localPoint);
-
-        float duration = distance / speed; // 鍋囪閫熷害涓�1000鍗曚綅/绉掞紝鍙互鏍规嵁闇�瑕佽皟鏁�
+        float duration = distance / speed;
 
         var tween = transform.DOAnchorPos(localPoint, duration).SetEase(Ease.Linear);
         tween.onComplete += () =>
@@ -88,69 +89,12 @@
             onComplete?.Invoke();
         };
 
-        // MarkStartAndEnd(transform as RectTransform, target);
-
-
-        // // 1. 鑾峰彇鐩爣鐨勪笘鐣屽潗鏍囷紙鍔� offset锛�
-        // Vector3 targetWorldPos = target.TransformPoint(target.anchoredPosition + offset);
-
-        // // 2. 鑾峰彇婧愯妭鐐圭殑 parent
-        // RectTransform sourceParent = transform.parent as RectTransform;
-        // if (sourceParent == null)
-        // {
-        //     BattleDebug.LogError("婧愯妭鐐规病鏈夌埗鑺傜偣锛屾棤娉曡浆鎹㈠潗鏍囷紒");
-        //     return null;
-        // }
-
-        // // 3. 鎶婄洰鏍囦笘鐣屽潗鏍囪浆鎹㈠埌婧� parent 鐨勬湰鍦板潗鏍�
-        // Vector2 targetAnchoredPos;
-        // RectTransformUtility.ScreenPointToLocalPointInRectangle(
-        //     sourceParent,
-        //     RectTransformUtility.WorldToScreenPoint(CameraManager.uiCamera, targetWorldPos),
-        //     CameraManager.uiCamera,
-        //     out targetAnchoredPos);
-
-        // // 4. DOTween 绉诲姩
-        // var tween = transform.DOAnchorPos(targetAnchoredPos, duration).SetEase(Ease.Linear);
-        // tween.onComplete += () =>
-        // {
-        //     onComplete?.Invoke();
-        // };
-
         return tween;
     }
 
     public static string DisplayDamageNum(long num, int attackType)
     {
-        // 鏈嶅姟鍣ㄤ綅鏁板埌瀹㈡埛绔被鍨婭D鐨勬槧灏�
-        Dictionary<int, int> serverToClientTypeMap = new Dictionary<int, int>
-        {
-            { 1, 2 },    // 鏅�氫激琛�
-            { 2, 4 },    // 鎭㈠鍥炶
-            { 3, 8 },    // 鍙嶅脊浼よ
-            { 4, 16 },   // 鎸佺画浼よ
-            { 5, 32 },   // 鏍兼尅
-            { 7, 64 },   // 鏆村嚮浼ゅ
-            { 9, 128 },  // 闂伩
-            // 鍏跺畠绫诲瀷濡傞渶琛ュ厖鍙户缁坊鍔�
-        };
-
-        int damageTypeValue = 0;
-        for (int i = 0; i < 32; i++)
-        {
-            int flag = 1 << i;
-            if ((attackType & flag) != 0)
-            {
-                // 鍙鐞嗘湁鏄犲皠鐨勭被鍨�
-                if (serverToClientTypeMap.TryGetValue(i + 1, out int clientTypeId))
-                {
-                    damageTypeValue += clientTypeId;
-                }
-            }
-        }
-        DamageType damageType = (DamageType)damageTypeValue;
-
-        var config = DamageNumConfig.Get(damageTypeValue);
+        var config = DamageNumConfig.Get(attackType);
         var basePowerStr = UIHelper.ReplaceLargeArtNum(num);
         var result = string.Empty;
         for (int i = 0; i < basePowerStr.Length; i++)
@@ -162,6 +106,48 @@
             }
         }
         return result;
+    }
+
+    public static string DisplayDamageNum(BattleDmg damage)
+    {
+        var config = DamageNumConfig.Get(damage.attackType);
+
+        string result = string.Empty;
+
+        //  濡傛灉鏄棯閬� 鍒欏彧鏄剧ず闂伩涓や釜瀛�
+        if (damage.IsType(DamageType.Dodge))
+        {
+            result += (char)config.prefix;
+        }
+        else
+        {
+            result = ConvertToArtFont(config, damage.damage);
+        }
+
+        return result;
+    }
+
+    public static string ConvertToArtFont(DamageNumConfig config, float _num)
+    {
+        var stringBuild = new System.Text.StringBuilder();
+
+        if (0 != config.plus)
+            stringBuild.Append((char)config.plus);
+        if (0 != config.prefix)
+            stringBuild.Append((char)config.prefix);
+
+        var chars = UIHelper.ReplaceLargeArtNum(_num);
+        for (var i = 0; i < chars.Length; i++)
+        {
+            int numChar = GetDamageNumKey(config, (int)chars[i]);
+
+            if (numChar > 0)
+            {
+                stringBuild.Append((char)numChar);
+            }
+        }
+
+        return stringBuild.ToString();
     }
 
     public static int GetMainTargetPositionNum(BattleObject caster, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> targetList, SkillConfig skillConfig)
@@ -223,7 +209,7 @@
                 //  1銆�2銆�3鍙蜂綅涓哄墠鎺掞紝榛樿2鍙蜂綅缃负涓荤洰鏍囷紝褰�1銆�2銆�3鍙蜂綅缃鑹插叏閮ㄦ浜★紝鍓嶆帓灏嗘浛鎹㈡垚鍚庢帓锛�5鍙蜂綅缃彉鏇翠负涓荤洰鏍囷紝
                 //  鑻ラ厤缃甌agAffect缁嗗垎鐩爣锛屼笖浜烘暟灏忎簬3锛屽垯鎵�鏈夎閫夋嫨鐩爣鍧囦负涓荤洰鏍囷紙鏂芥硶浣嶇疆浼氱敤瀹㈡埛绔厤缃級
                 // 锛堝嵆鍓嶆帓榛樿2鍙蜂綅鎴�5鍙蜂綅瑙勫垯鏃犳晥锛屽疄闄呬綔鐢ㄥ灏戜汉灏辨槸澶氬皯涓富鐩爣锛� (YL : TagAffect>0 && TagAffect != 3灏辨槸鍏ㄤ綋閮芥槸涓荤洰鏍� 鍚庢帓涓�鏍� )
-                if (skillConfig.TagAffect != 0 && skillConfig.TagAffect != 3 && skillConfig.TagCount < 3)
+                if (skillConfig.TagAffect != 0 || skillConfig.TagCount < 3)
                 {
                     uint objId = targetList[0].ObjID;
                     BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)objId);
@@ -232,7 +218,7 @@
                 else
                 {
                     //  鐪嬬湅瀵归潰鍓嶆帓鏄惁閮芥椿鐫�
-                        List<BattleObject> front = new List<BattleObject>(from bo in targetObjList where !bo.IsDead() && bo.teamHero.positionNum < 3 select bo);
+                    List<BattleObject> front = new List<BattleObject>(from bo in targetObjList where !bo.IsDead() && bo.teamHero.positionNum < 3 select bo);
                     if (front.Count > 0)
                     {
                         returnIndex = 1;
@@ -244,7 +230,7 @@
                 }
                 break;
             case 3:
-                if (skillConfig.TagAffect != 0 && skillConfig.TagAffect != 3 && skillConfig.TagCount < 3)
+                if (skillConfig.TagAffect != 0 || skillConfig.TagCount < 3)
                 {
                     uint objId = targetList[0].ObjID;
                     BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)objId);
@@ -317,24 +303,13 @@
     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++)
+        for (int i = 0; i < damageDivide.Length; i++)
         {
-            long damage;
-            if (i == count - 1)
-            {
-                // 鏈�鍚庝竴涓垎閰嶉」淇涓哄墿浣�
-                damage = totalDamage - assigned;
-            }
-            else
-            {
-                damage = (totalDamage * damageDivide[i] + 5000) / 10000; // 鍥涜垗浜斿叆
-                assigned += damage;
-            }
-            fixedDamageList.Add(damage);
+            float fixedDamage = (float)totalDamage * (float)damageDivide[i] / 10000f;
+            fixedDamageList.Add((int)fixedDamage);
         }
+        
         return fixedDamageList;
     }
 
@@ -345,47 +320,36 @@
         {
             var pack = packList[i];
             //	瀵绘壘姝讳骸鍖� 鎵惧埌姝讳骸鍖呬箣鍚庤鎵炬帀钀藉寘 涓嶈兘瓒呰繃鎶�鑳藉寘
-            if (pack is HB422_tagMCTurnFightObjDead)
+            if (pack is HB422_tagMCTurnFightObjDead deadPack)
             {
-                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;
-                }
+                break;
             }
         }
+        // Debug.LogError("find dead pack " + deadPacks.Count);
         return deadPacks;
     }
 
 
     public static List<HB423_tagMCTurnFightObjReborn> FindRebornPack(List<GameNetPackBasic> packList)
     {
-        List<HB423_tagMCTurnFightObjReborn> rebornPack = new List<HB423_tagMCTurnFightObjReborn>();
+        List<HB423_tagMCTurnFightObjReborn> rebornPackList = new List<HB423_tagMCTurnFightObjReborn>();
         for (int i = 0; i < packList.Count; i++)
         {
             var pack = packList[i];
             //	瀵绘壘姝讳骸鍖� 鎵惧埌姝讳骸鍖呬箣鍚庤鎵炬帀钀藉寘 涓嶈兘瓒呰繃鎶�鑳藉寘
-            if (pack is HB423_tagMCTurnFightObjReborn)
+            if (pack is HB423_tagMCTurnFightObjReborn rebornPack)
             {
-                var deadPack = pack as HB423_tagMCTurnFightObjReborn;
-                rebornPack.Add(deadPack);
+                rebornPackList.Add(rebornPack);
             }
             else if (pack is CustomHB426CombinePack)
             {
-                //	鎵炬浜″寘涓嶈瓒婅繃鎶�鑳藉寘
-                var combinePack = pack as CustomHB426CombinePack;
-                if (combinePack.startTag.Tag.StartsWith("Skill_"))
-                {
-                    break;
-                }
+                break;
             }
         }
-        return rebornPack;
+        return rebornPackList;
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0