Beispiel #1
0
 public Transition(State start, State end, Predicate predicate, State.Action action = null)
 {
     this.start     = start;
     this.end       = end;
     this.predicate = predicate;
     this.action    = action;
 }
        private void InitStateMachine()
        {
            _stateMachine = new StateMachine();
            _stateMachine.name = "Machine";

            State.Action randomAction = new State.Action(() =>
            {
                UpdateRoadRandom();
            });
            State.Action esquiveAction = new State.Action(() =>
            {
                UpdateRoadEsquive();
            });

            State random = new State(_stateMachine, randomAction);
            random.name = "Random";
            State esquive = new State(_stateMachine, esquiveAction);
            random.name = "Esquive";

            Transition.IsTransitioning transitionBullet = new Transition.IsTransitioning(() =>
            {
                return _bullets.Count > 0;
            });
            Transition.IsTransitioning transitionNoBullet = new Transition.IsTransitioning(() =>
            {
                return _bullets.Count == 0;
            });

            Transition bulletDetected = new Transition(esquive, transitionBullet);
            Transition bulletNotDetected = new Transition(random, transitionNoBullet);

            random.AddTransition(bulletDetected);
            esquive.AddTransition(bulletNotDetected);

            _stateMachine._currentState = random;
        }