Files
Continentis/Assets/Scripts/MainGame/Character/CharacterLifecycleDispatch.cs
SoulliesOfficial ac98ec3aef 更新
2026-04-17 12:01:50 -04:00

78 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using SLSUtilities.General;
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());
}
}
}