yyl
7 天以前 73230b277cda84d306030d1f8db2ad37e9016c5f
125 战斗 伤害震动 BUFF图标问题
4个文件已修改
69 ■■■■■ 已修改文件
Main/System/Battle/BattleObject/BattleObject.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Buff/BattleObjectBuffMgr.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/StoryBossBattleWin.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/UIComp/TotalDamageDisplayer.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | 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));