예제 #1
0
        private void _ToMove(float direction,long time)
        {
            BehaviorStage.OnBegin begin = () =>
            {
                var speedChange = new SpeedChangeBehaviorHandler(_Entity);
                var move = new MoveBehaviorHandler(_Entity);
                var stop = new StopToIdleBehaviorHandler(_Entity);
                var idle = new MoveToIdleBehaviorHandler(_Entity);
                var injury = new IdleToInjuryBehaviorHandler(_Entity);

                speedChange.MoveEvent += _ToMove;
                move.MoveEvent += _ToMove;
                stop.DoneEvent += _ToIdle;
                idle.DoneEvent += _ToIdle;
                injury.DoneEvent += _ToInjury;
                _EntityMove(direction, time);

                var actor = _Entity.FindAbility<IActorPropertyAbility>();
                actor.BeginExpendEnergy();
                return new IBehaviorHandler[] { move, stop, idle, injury, speedChange };
            };

            _ChangeStage(begin);
        }
예제 #2
0
        private void _ToIdle()
        {
            _ChangeStage(() =>
            {
                var move = new MoveBehaviorHandler(_Entity);
                var injury = new IdleToInjuryBehaviorHandler(_Entity);
                var skill = new IdleToSkillBehaviorHandler(_Entity);
                var knockout = new KnockoutBehaviorHandler(_Entity);

                injury.DoneEvent += _ToInjury;
                move.MoveEvent += _ToMove;
                skill.SkillEvent += _ToSkill;
                knockout.DoneEvent += _ToKnockout;
                var actor = _Entity.FindAbility<IActorPropertyAbility>();
                actor.EndExpendEnergy();
                _EntityAct(new Serializable.ActionCommand() { Command = ActionStatue.Idle_1, Turn = true } );
                return new IBehaviorHandler[] { injury, move, skill, knockout };
            });
        }