From cb018a575005f873135fab3201d1bf6d408e2b6a Mon Sep 17 00:00:00 2001 From: yyl <yyl> Date: 星期四, 18 九月 2025 14:50:31 +0800 Subject: [PATCH] 125 【战斗】战斗系统 技能表现修改 --- Main/System/Battle/Buff/BattleObjectBuffMgr.cs | 106 ++++++++++++++++++++++++++++++++--------------------- 1 files changed, 64 insertions(+), 42 deletions(-) diff --git a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs index 9704be3..fd1d6f5 100644 --- a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs +++ b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs @@ -6,11 +6,8 @@ public class BattleObjectBuffMgr { - // buffId, effectId, EffectPlayer - private Dictionary<uint, Dictionary<int, BattleEffectPlayer>> buffEffectDict = new Dictionary<uint, Dictionary<int, BattleEffectPlayer>>(); + private Dictionary<int/*EffectId*/, KeyValuePair<BattleEffectPlayer, HashSet<uint/*BuffID*/>>> buffEffectDict = new Dictionary<int, KeyValuePair<BattleEffectPlayer, HashSet<uint>>>(); - - // buffId, buffdata private Dictionary<uint, HB428_tagSCBuffRefresh> buffDataDict = new Dictionary<uint, HB428_tagSCBuffRefresh>(); private BattleObject battleObject; @@ -25,17 +22,31 @@ } - // 澧炲姞buff - public void AddBuff(HB428_tagSCBuffRefresh vNetData) + public void Run() { - // BuffBase buffBase = BuffFactory.CreateBuff(vNetData, battleObject); - // if (null == buffBase) - // { - // return; - // } + // 璺熼殢BattleObject + foreach (var kv in buffEffectDict) + { + // foreach (var kv2 in effectDict) + { + BattleEffectPlayer effectPlayer = kv.Value.Key; + effectPlayer.transform.position = battleObject.heroRectTrans.position; + } + } + } - // buffBase.OnAdd(); - + public void RemoveAllBuff() + { + foreach (var kv in buffEffectDict) + { + KeyValuePair<BattleEffectPlayer, HashSet<uint>> pair = kv.Value; + battleObject.battleField.battleEffectMgr.RemoveEffect(kv.Key, pair.Key); + } + + buffEffectDict.Clear(); + buffDataDict.Clear(); + + battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList()); } // 鍒犻櫎buff @@ -50,18 +61,24 @@ if (buffData != null) { - Dictionary<int, BattleEffectPlayer> effectDict = null; + SkillConfig skillConfig = SkillConfig.Get((int)buffData.SkillID); - if (buffEffectDict.TryGetValue(vNetData.BuffID, out effectDict)) + if (null == skillConfig || skillConfig.BuffEffect <= 0) { - SkillConfig skillConfig = SkillConfig.Get((int)buffData.SkillID); - if (null != skillConfig) + return; + } + + KeyValuePair<BattleEffectPlayer, HashSet<uint>> effectPair; + + if (buffEffectDict.TryGetValue(skillConfig.BuffEffect, out effectPair)) + { + effectPair.Value.Remove(vNetData.BuffID); + + if (effectPair.Value.Count == 0) { - BattleEffectPlayer effectPlayer = null; - if (effectDict.TryGetValue(skillConfig.EffectId, out effectPlayer)) - { - battleObject.battleField.battleEffectMgr.RemoveEffect(skillConfig.EffectId, effectPlayer); - } + // 娌℃湁杩欎釜buff浜� + battleObject.battleField.battleEffectMgr.RemoveEffect(skillConfig.BuffEffect, effectPair.Key); + buffEffectDict.Remove(skillConfig.BuffEffect); } } } @@ -70,8 +87,17 @@ battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList()); } + // 鍒锋柊buff public void RefreshBuff(HB428_tagSCBuffRefresh vNetData) { + SkillConfig skillConfig = SkillConfig.Get((int)vNetData.SkillID); + + if (null == skillConfig) + { + Debug.LogError("buff瀵瑰簲鐨勬妧鑳戒笉瀛樺湪锛宻killId : " + vNetData.SkillID); + return; + } + bool isNew = false; if (buffDataDict.ContainsKey(vNetData.BuffID)) { @@ -86,35 +112,31 @@ if (isNew) { BuffMountAction buffMountAction = new BuffMountAction(battleObject.battleField, battleObject, vNetData, () => - { - SkillConfig skillConfig = SkillConfig.Get((int)vNetData.SkillID); - if (null != skillConfig && skillConfig.EffectId > 0) + { + if (null != skillConfig && skillConfig.BuffEffect > 0) { - // Dictionary<uint, Dictionary<int, BattleEffectPlayer>> buffEffectDict - Dictionary<int, BattleEffectPlayer> effectDict = null; - if (buffEffectDict.TryGetValue(vNetData.BuffID, out effectDict)) + // 宸茬粡瀛樺湪鐩稿悓鐨刡uff鐗规晥 + if (buffEffectDict.TryGetValue(skillConfig.BuffEffect, out KeyValuePair<BattleEffectPlayer, HashSet<uint>> pair)) { - // 瀛樺湪杩欎釜buffid鐨勭壒鏁堝瓧鍏� - if (effectDict.ContainsKey(skillConfig.EffectId)) - { - Debug.LogError("宸插瓨鍦ㄥ悓鏍风殑buff鐗规晥 " + skillConfig.EffectId); - } - else - { - BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr.PlayEffect(battleObject, skillConfig.EffectId, battleObject.heroRectTrans, battleObject.Camp); - effectDict.Add(skillConfig.EffectId, effect); - } + pair.Value.Add(vNetData.BuffID); } else { - effectDict = new Dictionary<int, BattleEffectPlayer>(); - BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr.PlayEffect(battleObject, skillConfig.EffectId, battleObject.heroRectTrans, battleObject.Camp); - effectDict.Add(skillConfig.EffectId, effect); - buffEffectDict.Add(vNetData.BuffID, effectDict); + BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr.PlayEffect(battleObject, skillConfig.BuffEffect, battleObject.heroRectTrans, battleObject.Camp); + HashSet<uint> buffIdSet = new HashSet<uint>(); + buffIdSet.Add(vNetData.BuffID); + buffEffectDict.Add(skillConfig.BuffEffect, new KeyValuePair<BattleEffectPlayer, HashSet<uint>>(effect, buffIdSet)); } } + battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList()); }); battleObject.battleField.recordPlayer.PlayRecord(buffMountAction); } + else + { + // 宸茬粡瀛樺湪鐨刡uff 鍒锋柊 + battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList()); + } } + } \ No newline at end of file -- Gitblit v1.8.0