示例#1
0
        private StateTransition GetNextTransition()
        {
            int index = transitions.IndexOf(currentTransition);

            if (currentTransition != null && PlayingLastTransition())
            {
                isFininshed = true;

                return(null);
            }

            TransitionFininshed(this, new TransitionPlayerEventArgs(currentTransition));

            StateTransition next = transitions[index + 1];

            next.LastTransition = currentTransition;

            if (!PlayingLastTransition())
            {
                if (index + 2 < transitions.Count)
                {
                    next.NextTransition = transitions[index + 2];
                }
            }

            next.Start();

            return(next);
        }
示例#2
0
        public void Start()
        {
            if (running)
            {
                return;
            }

            foreach (StateTransition transition in transitions)
            {
                transition.NextGameState    = nextGameState;
                transition.CurrentGameState = currentGameState;
            }

            running = true;

            currentTransition = transitions[0];

            if (!PlayingLastTransition())
            {
                currentTransition.NextTransition = transitions[1];
            }

            currentTransition.Start();
        }