示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
                }
            }
        }