| Main/System/Battle/BattleObject/BattleObject.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Battle/Buff/BattleObjectBuffMgr.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Battle/StoryBossBattleWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Battle/UIComp/TotalDamageDisplayer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Main/System/Battle/BattleObject/BattleObject.cs
@@ -127,6 +127,8 @@ motionBase.Release(); motionBase = null; buffMgr.Release(); buffMgr = null; teamHero = null; ObjID = 0; Main/System/Battle/Buff/BattleObjectBuffMgr.cs
@@ -7,6 +7,9 @@ public class BattleObjectBuffMgr { public Action onBuffChanged; private Dictionary<int/*EffectId*/, KeyValuePair<BattleEffectPlayer, HashSet<uint/*BuffID*/>>> buffEffectDict = new Dictionary<int, KeyValuePair<BattleEffectPlayer, HashSet<uint>>>(); private Dictionary<uint, HB428_tagSCBuffRefresh> buffDataDict = new Dictionary<uint, HB428_tagSCBuffRefresh>(); @@ -20,7 +23,7 @@ public void Release() { onBuffChanged = null; } public void Run() @@ -67,6 +70,7 @@ buffDataDict.Clear(); battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList()); onBuffChanged?.Invoke(); } // 删除buff @@ -105,6 +109,7 @@ // 不做表现 battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList()); onBuffChanged?.Invoke(); } // 刷新buff @@ -161,6 +166,7 @@ } } battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList()); onBuffChanged?.Invoke(); }); if (insert) { @@ -175,6 +181,7 @@ { // 已经存在的buff 刷新 battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList()); onBuffChanged?.Invoke(); } } Main/System/Battle/StoryBossBattleWin.cs
@@ -106,6 +106,12 @@ if (!UIManager.Instance.IsOpened<MainWin>()) UIManager.Instance.OpenWindow<MainWin>(); if (null != bossBattleObject) { bossBattleObject.buffMgr.onBuffChanged -= OnBuffChanged; bossBattleObject = null; } } private void OnCreateBattleField(string arg1, BattleField field) @@ -131,6 +137,12 @@ NPCLineupConfig lineupConfig = battleField.GetBossLineupConfig(); if (null != bossBattleObject) { bossBattleObject.buffMgr.onBuffChanged -= OnBuffChanged; bossBattleObject = null; } bossBattleObject = battleField.FindBoss(); DisplaySkillWordsList(lineupConfig); @@ -142,6 +154,8 @@ txtBossName.text = teamHero.name; NPCConfig npcConfig = NPCConfig.Get(teamHero.NPCID); bossLifeBar.SetBaseInfo(Mathf.Max(1, npcConfig.LifeBarCount), (ulong)teamHero.curHp, (ulong)teamHero.maxHp); bossBattleObject.buffMgr.onBuffChanged -= OnBuffChanged; bossBattleObject.buffMgr.onBuffChanged += OnBuffChanged; } else { @@ -152,6 +166,20 @@ } txtBattleRound.text = string.Format("{0}/{1}", battleField.round, battleField.turnMax); OnBuffChanged(); totalDamageDisplayer.SetActive(false); } private void OnBuffChanged() { var buffList = new List<HB428_tagSCBuffRefresh>(); if (null != bossBattleObject) { buffList = bossBattleObject.buffMgr.GetBuffList(); } RefreshBuff(buffList); } private void RefreshHP() @@ -166,6 +194,9 @@ private void OnDamageTaken(BattleDmgInfo info) { if (info.battleFieldGuid != battleField.guid) return; if (info.hurtObj.ObjID == bossBattleObject.ObjID) { // Update the boss's health bar Main/System/Battle/UIComp/TotalDamageDisplayer.cs
@@ -1,8 +1,8 @@ using System.Collections; using Cysharp.Threading.Tasks; using DG.Tweening; using UnityEngine; using UnityEngine.UI; using System.Threading; public class TotalDamageDisplayer : MonoBehaviour { @@ -14,6 +14,10 @@ private Coroutine hideCoroutine; private int hideVersion = 0; private long damage = 0; private long heal = 0; public void SetDamage(BattleDmgInfo dmgInfo) { @@ -29,11 +33,28 @@ if (dmgInfo.IsType(DamageType.Recovery)) { // 保持原有处理逻辑位置 foreach (var h in dmgInfo.damageList) { heal += h; } textDamage.text = BattleUtility.DisplayDamageNum(heal, BattleConst.BattleTotalRecoverType); textTotalDesc.text = "总治疗"; } 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); textTotalDesc.text = "总伤害"; } textDamage.transform.DOPunchScale(Vector3.one * 0.2f, 0.2f, 1).OnComplete(() => { textDamage.transform.localScale = Vector3.one; }); if (dmgInfo.isLastHit) { @@ -41,10 +62,12 @@ hideVersion++; int myVersion = hideVersion; damage = 0; heal = 0; var battleField = BattleManager.Instance.GetBattleField(dmgInfo.battleFieldGuid); float ms = 1000f / battleField.speedRatio; float ms = 500f / battleField.speedRatio; hideCoroutine = StartCoroutine(HideAfterDelayCoroutine(ms, myVersion));