/// <summary> /// 派生类重写此方法当玩家作为事件的发起者要执行的操作 /// </summary> /// <param name="gameEvent">引发的游戏事件</param> /// <returns>用于等待事件处理完毕的 Task 对象</returns> public virtual async Task OnBehaviorInitiator(IGameBehaviorEvent gameEvent) { if (Available == false) { return; } var attackEvent = gameEvent as AttackEvent; if (attackEvent != null && attackEvent.Handled == false) { await OnLaunchAttack(attackEvent); } }
/// <summary> /// 派生类重写此方法当玩家作为事件的接受者要执行的操作 /// </summary> /// <param name="gameEvent">引发的游戏事件</param> /// <returns>用于等待事件处理完毕的 Task 对象</returns> public virtual async Task OnBehaviorRecipient(IGameBehaviorEvent gameEvent) { if (Available == false) { return; } var attackEvent = gameEvent as AttackEvent; if (attackEvent != null && attackEvent.Handled == false) { await OnAttacked(attackEvent); } }
/// <summary> /// 处理玩家行为事件 /// </summary> /// <param name="behaviorEvent">玩家行为事件/param> /// <returns>用于等待事件处理完成的 Task</returns> protected virtual async Task OnGameEvent(IGameBehaviorEvent behaviorEvent) { if (behaviorEvent.InitiatePlayer.Equals(this)) { foreach (var item in Effects.OfType <IGameBehaviorEffect>()) { await item.OnBehaviorInitiator(behaviorEvent); } } if (behaviorEvent.RecipientPlayer.Equals(this)) { foreach (var item in Effects.OfType <IGameBehaviorEffect>()) { await item.OnBehaviorRecipient(behaviorEvent); } } }