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