From 453e96025c4f78888e11f8da85fbdb78245e23f9 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 29 十二月 2025 02:36:23 +0800
Subject: [PATCH] 351 【内政】红颜系统

---
 Main/System/Battle/UIComp/TotalDamageDisplayer.cs |   86 ++++++++++++++++++++++++++++++++++++++----
 1 files changed, 77 insertions(+), 9 deletions(-)

diff --git a/Main/System/Battle/UIComp/TotalDamageDisplayer.cs b/Main/System/Battle/UIComp/TotalDamageDisplayer.cs
index 41df9e1..4abc05c 100644
--- a/Main/System/Battle/UIComp/TotalDamageDisplayer.cs
+++ b/Main/System/Battle/UIComp/TotalDamageDisplayer.cs
@@ -1,32 +1,100 @@
 using System.Collections;
-using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
+using DG.Tweening;
 using UnityEngine;
 using UnityEngine.UI;
 
 public class TotalDamageDisplayer : MonoBehaviour
 {
     public Image damageBackground;
-
     public Text textDamage;
+    public Image imgTotalDesc; //鎬讳激瀹虫垨鑰呮�绘不鐤�
 
-    public Text textTotalDesc; //鎬讳激瀹虫垨鑰呮�绘不鐤�
+    private long damage = 0;
 
-    public void SetDamage(bool isEnd, BattleDmgInfo dmgInfo)
+    private long heal = 0;
+
+    public const float scaleDuration = 1.5f;
+
+    public const float delayCloseDuration = 1.5f;
+
+    public static readonly Vector3 scalePunch = new Vector3(0.4f, 0.4f, 0.4f);
+
+    private Sequence punchTween = null;
+
+    public void SetDamage(BattleDmgInfo dmgInfo)
     {
+        var battleField = BattleManager.Instance.GetBattleField(dmgInfo.battleFieldGuid);
+
+        if (!gameObject.activeInHierarchy)
+            gameObject.SetActive(true);
+
         if (dmgInfo == null)
-        {
             return;
+
+        if (dmgInfo.isFirstHit)
+        {
+            damage = 0;
+            heal = 0;
         }
 
         if (dmgInfo.IsType(DamageType.Recovery))
         {
-
+            // 淇濇寔鍘熸湁澶勭悊閫昏緫浣嶇疆
+            foreach (var h in dmgInfo.damageList)
+            {
+                heal += h;
+            }
+            textDamage.text = BattleUtility.DisplayDamageNum(heal, BattleConst.BattleTotalRecoverType);
+            damageBackground.sprite = UILoader.LoadSprite("Fight", "Fight1_img_83");
+            imgTotalDesc.sprite = UILoader.LoadSprite("Fight", "Fight1_img_80");
         }
         else if (dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsType(DamageType.Realdamage))
         {
-
+            // 淇濇寔鍘熸湁澶勭悊閫昏緫浣嶇疆
+            foreach (var d in dmgInfo.damageList)
+            {
+                damage += d;
+            }
+            textDamage.text = BattleUtility.DisplayDamageNum(damage, BattleConst.BattleTotalDamageType);
+            imgTotalDesc.sprite = UILoader.LoadSprite("Fight", "Fight1_img_85");
+            damageBackground.sprite = UILoader.LoadSprite("Fight", "Fight1_img_88");
         }
+        else
+        {
+            gameObject.SetActive(false);
+            return;
+        }
+        // else
+        // {
+        //     textDamage.text =BattleUtility.DisplayDamageNum(0, BattleConst.BattleTotalDamageType);
+        //     imgTotalDesc.sprite = UILoader.LoadSprite("Fight", "Fight1_img_85");
+        //     damageBackground.sprite = UILoader.LoadSprite("Fight", "Fight1_img_88");
+        // }
+
+        if (punchTween != null && punchTween.IsActive())
+        {
+            battleField.battleTweenMgr.OnKillTween(punchTween);
+            textDamage.transform.localScale = Vector3.one;
+            punchTween = null;
+        }
+
+        punchTween = DOTween.Sequence();
+        var tween1 = textDamage.transform.DOPunchScale(scalePunch, scaleDuration / battleField.speedRatio, 1);
+        punchTween.Append(tween1);
+        //  鎾斁缁撴潫鍚� 寤惰繜1.5绉掑啀娑堝け
+        var tween2 = DOVirtual.DelayedCall(delayCloseDuration / battleField.speedRatio, () => { });
+        punchTween.Append(tween2);
+        punchTween.OnComplete(() =>
+        {
+            textDamage.transform.localScale = Vector3.one;
+            if (dmgInfo.isLastHit)
+            {
+                gameObject.SetActive(false);
+            }
+        });
+
+        battleField.battleTweenMgr.OnPlayTween(punchTween);
+
     }
-
-
 }

--
Gitblit v1.8.0