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/BattleConst.cs | 8 ++
Main/System/Battle/BattleObject/BattleObject.cs | 5 +
Main/System/Battle/Skill/SkillBase.cs | 19 ++++++
Main/System/Battle/Buff/BattleObjectBuffMgr.cs | 106 +++++++++++++++++++++--------------
Main/Component/UI/Effect/BattleEffectPlayer.cs | 4 -
Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs | 5 +
6 files changed, 99 insertions(+), 48 deletions(-)
diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
index 703ed32..df7c822 100644
--- a/Main/Component/UI/Effect/BattleEffectPlayer.cs
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -36,8 +36,6 @@
public float speedRate = 1.5f;
-
-
[Header("鎾斁瀹屾瘯绔嬪嵆鍥炴敹")]
public bool isReleaseImmediately = false; //鐣岄潰鐗规晥涓�鑸笉闇�瑕佽嚜鎴戦攢姣侊紝璺熼殢鐣岄潰鎴栬�呯埗瀵硅薄閿�姣佸氨琛�
@@ -377,7 +375,7 @@
public string sortingLayer;
public int sortingOrder;
- private RectTransform rectTrans;
+ public RectTransform rectTrans;
protected void OnSortingChanged(string _sortingLayer, int _sortingOrder)
{
diff --git a/Main/System/Battle/BattleConst.cs b/Main/System/Battle/BattleConst.cs
index 07c2e1c..18eb822 100644
--- a/Main/System/Battle/BattleConst.cs
+++ b/Main/System/Battle/BattleConst.cs
@@ -99,6 +99,14 @@
}
}
+ public static int ActiveHeroActionSortingOrder
+ {
+ get
+ {
+ return ActiveHeroSortingOrder + 1;
+ }
+ }
+
// 婵�娲昏嫳闆勭殑鍚庣壒鏁�
public static int ActiveHeroBackSortingOrder
{
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index ecef462..c686fea 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -40,8 +40,6 @@
public TeamHero teamHero { get; protected set; }
- // public BuffMgr buffMgr;
-
public MotionBase motionBase;
public GameObject heroGo
@@ -111,6 +109,7 @@
{
motionBase.Run();
heroInfoBar.Run();
+ buffMgr.Run();
}
public virtual void Pause()
@@ -331,6 +330,8 @@
{
// 鎴栬鐪嬬湅婧惰В鐗规晥锛� YYL TODO
heroGo.SetActive(false);
+
+ buffMgr.RemoveAllBuff();
}
public void OnReborn(HB423_tagMCTurnFightObjReborn vNetData)
diff --git a/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs b/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
index 08a5bcf..51b4576 100644
--- a/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
@@ -61,6 +61,11 @@
public void UpdateLayer()
{
+ for (int i = 0; i < effectPlayers.Count; i++)
+ {
+ effectPlayers[i].SetActive(isFront);
+ }
+
int order = isFront ? BattleConst.ActiveHeroSortingOrder : BattleConst.UnactiveHeroSortingOrder;
SetSortingOrder(order);
}
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
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 049ac80..09f6301 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -376,10 +376,13 @@
return;
// 楂樹寒鎵�鏈夌洰鏍�
- List<BattleObject> highlightList = battleField.battleObjMgr.GetBattleObjList(tagUseSkillAttack);
+ List<BattleObject> targetList = battleField.battleObjMgr.GetBattleObjList(tagUseSkillAttack);
+ List<BattleObject> highlightList = new List<BattleObject>(targetList);
highlightList.Add(caster);
List<BattleObject> allList = battleField.battleObjMgr.allBattleObjDict.Values.ToList<BattleObject>();
+
+ caster.heroInfoBar.SetActive(false);
for (int i = 0; i < allList.Count; i++)
{
@@ -387,6 +390,7 @@
if (highlightList.Contains(bo))
{
bo.layerMgr.SetFront();
+ bo.heroInfoBar.SetActive(true);
bo.heroRectTrans.SetParent(battleField.battleRootNode.skillFrontNode, true);
}
else
@@ -394,7 +398,18 @@
bo.layerMgr.SetBack();
bo.heroRectTrans.SetParent(battleField.battleRootNode.skillBackNode, true);
}
+
+ if (targetList.Contains(bo))
+ {
+ bo.heroInfoBar.SetActive(true);
+ }
+ else
+ {
+ bo.heroInfoBar.SetActive(false);
+ }
}
+
+ caster.layerMgr.SetSortingOrder(BattleConst.ActiveHeroActionSortingOrder);
battleField.battleRootNode.skillMaskNode.SetActive(true);
@@ -635,9 +650,11 @@
BattleObject bo = allList[i];
bo.layerMgr.SetFront();
bo.heroRectTrans.SetParent(battleField.GetTeamNode(bo.Camp, bo.teamHero.positionNum), true);
+ bo.heroInfoBar.SetActive(true);
}
battleField.battleRootNode.skillMaskNode.SetActive(false);
+
return true;
--
Gitblit v1.8.0