using System.Collections.Generic; using SLSUtilities.General; using SoftCircuits.Collections; using UnityEngine; namespace Cielonos.MainGame.Characters { public partial class EventSubmodule : SubmoduleBase { public EventSubmodule(CharacterBase owner) : base(owner) { onCombatStart = new OrderedDictionary(); onCombatEnd = new OrderedDictionary(); onHealthChanged = new OrderedDictionary>(); onEnergyChanged = new OrderedDictionary>(); onFirstJump = new OrderedDictionary(); onJumpLand = new OrderedDictionary(); onDashStart = new OrderedDictionary(); onDashEnd = new OrderedDictionary(); onDodgeStart = new OrderedDictionary(); onDodgeEnd = new OrderedDictionary(); onGetHit = new OrderedDictionary>(); onGetBreakthrough = new OrderedDictionary>(); onStartAttack = new OrderedDictionary>(); onFinishAttack = new OrderedDictionary>(); onBeforeGetAttacked = new OrderedDictionary>(); onAfterGetAttacked = new OrderedDictionary>(); onBlockSuccess = new OrderedDictionary>(); onNormalBlockSuccess = new OrderedDictionary>(); onPerfectBlockSuccess = new OrderedDictionary>(); onNormalDodgeSuccess = new OrderedDictionary>(); onPerfectDodgeSuccess = new OrderedDictionary>(); } } #region Combat Events public partial class EventSubmodule { /// /// 战斗开始时 /// public OrderedDictionary onCombatStart; /// /// 战斗结束时 /// public OrderedDictionary onCombatEnd; } #endregion #region Action Events public partial class EventSubmodule { /// /// 第一次跳跃时 /// public OrderedDictionary onFirstJump; /// /// 跳跃落地时 /// public OrderedDictionary onJumpLand; /// /// 冲刺开始时 /// public OrderedDictionary onDashStart; /// /// 冲刺结束时 /// public OrderedDictionary onDashEnd; /// /// 闪避开始时,注意,冲刺也属于闪避,会触发这个事件 /// public OrderedDictionary onDodgeStart; /// /// 闪避结束时,注意,冲刺也属于闪避,会触发这个事件 /// public OrderedDictionary onDodgeEnd; } #endregion #region Attribute Change Events public partial class EventSubmodule { /// /// 生命变化时,参数为变化的数值 /// public OrderedDictionary> onHealthChanged; /// /// 能量变化时,参数为变化的数值 /// public OrderedDictionary> onEnergyChanged; } #endregion #region Attack Interaction Events public partial class EventSubmodule { /// /// 被击中时。参数为产生命中的攻击区域。 /// 注意,不需要必须受到伤害 /// public OrderedDictionary> onGetHit; /// /// 被突破时。参数为产生产击破的攻击区域。 /// 注意,不需要必须受到伤害 /// public OrderedDictionary> onGetBreakthrough; /// /// 开始攻击时。参数为产生成攻击的攻击区域、被攻击目标和(未完成的)攻击结果。 /// 此时还未开始攻击结果的计算,因此可以在这个事件中利用 AttackResult 进而修改其内部的 AttackValue /// public OrderedDictionary> onStartAttack; /// /// 完成攻击时,参数为产生成攻击的攻击区域、被攻击目标和(已完成的)攻击结果 /// 此时攻击结果已经计算完成,因此可以在这个事件中根据攻击结果进行一些后续处理 /// public OrderedDictionary> onFinishAttack; /// /// 被攻击前,参数为攻击区域和攻击结果 /// 此时还未开始扣血和打断动作逻辑,因此可以在这个事件中一票否决(设定isImmune)或者修改即将受到的最终伤害修饰算子 /// public OrderedDictionary> onBeforeGetAttacked; /// /// 被攻击后,参数为攻击区域和攻击结果 /// 此时攻击结果已经计算完成,因此可以在这个事件中根据攻击结果进行一些后续处理 /// public OrderedDictionary> onAfterGetAttacked; /// /// (任何)格挡成功时,参数为攻击区域和格挡来源 /// public OrderedDictionary> onBlockSuccess; /// /// 普通格挡成功时,参数为攻击区域和格挡来源 /// public OrderedDictionary> onNormalBlockSuccess; /// /// 完美格挡成功时,参数为攻击区域和格挡来源 /// public OrderedDictionary> onPerfectBlockSuccess; /// /// 普通闪避成功时,参数为闪避来源 /// public OrderedDictionary> onNormalDodgeSuccess; /// /// 完美闪避成功时,参数为闪避来源 /// public OrderedDictionary> onPerfectDodgeSuccess; } #endregion }