Files
Continentis/Assets/Scripts/MainGame/Character/CharacterLifecycleDispatch.cs

78 lines
3.1 KiB
C#
Raw Permalink Normal View History

2026-04-17 12:01:50 -04:00
using SLSUtilities.General;
2026-04-01 12:23:27 -04:00
namespace Continentis.MainGame.Character
{
/// <summary>
/// 角色生命周期事件的统一分发入口。
/// 每个 Dispatch 方法按固定顺序触发:角色 → 装备 → Buff → 卡牌,
/// 消除 CombatMainManager 中手动遍历各层级的冗余代码。
/// </summary>
public partial class CharacterBase
{
/// <summary>
/// 战斗开始时分发:角色 → 装备 → Buff → 卡牌。
/// </summary>
public void DispatchCombatStart()
{
eventSubmodule.onCombatStart.Invoke();
equipmentSubmodule.currentEquipments.ForEach(e => e.eventSubmodule.onCombatStart.Invoke());
combatBuffSubmodule.CombatStart();
deckSubmodule.GetAllCards().ForEach(c => c.eventSubmodule.onCombatStart.Invoke());
}
/// <summary>
/// 战斗结束时分发:角色 → 装备 → Buff。
/// </summary>
public void DispatchCombatEnd()
{
eventSubmodule.onCombatEnd.Invoke();
equipmentSubmodule.currentEquipments.ForEach(e => e.eventSubmodule.onCombatEnd.Invoke());
combatBuffSubmodule.CombatEnd();
}
/// <summary>
/// 回合开始时分发:角色 → 装备 → Buff含回合计数更新 → 卡牌。
/// </summary>
public void DispatchRoundStart()
{
eventSubmodule.onRoundStart.Invoke();
equipmentSubmodule.currentEquipments.ForEach(e => e.eventSubmodule.onRoundStart.Invoke());
combatBuffSubmodule.RoundStart();
deckSubmodule.GetAllCards().ForEach(c => c.eventSubmodule.onRoundStart.Invoke());
}
/// <summary>
/// 回合结束时分发:角色 → 装备 → Buff → 卡牌。
/// </summary>
public void DispatchRoundEnd()
{
eventSubmodule.onRoundEnd.Invoke();
equipmentSubmodule.currentEquipments.ForEach(e => e.eventSubmodule.onRoundEnd.Invoke());
combatBuffSubmodule.RoundEnd();
deckSubmodule.GetAllCards().ForEach(c => c.eventSubmodule.onRoundEnd.Invoke());
}
/// <summary>
/// 行动开始时分发:角色 → 装备 → Buff含行动计数更新 → 卡牌。
/// </summary>
public void DispatchActionStart()
{
eventSubmodule.onActionStart.Invoke();
equipmentSubmodule.currentEquipments.ForEach(e => e.eventSubmodule.onActionStart.Invoke());
combatBuffSubmodule.ActionStart();
deckSubmodule.GetAllCards().ForEach(c => c.eventSubmodule.onActionStart.Invoke());
}
/// <summary>
/// 行动结束时分发:角色 → 装备 → Buff → 卡牌。
/// </summary>
public void DispatchActionEnd()
{
eventSubmodule.onActionEnd.Invoke();
equipmentSubmodule.currentEquipments.ForEach(e => e.eventSubmodule.onActionEnd.Invoke());
combatBuffSubmodule.ActionEnd();
deckSubmodule.GetAllCards().ForEach(c => c.eventSubmodule.onActionEnd.Invoke());
}
}
}