Example #1
0
        public void Configure(IStates states, ITriggers triggers)
        {
            if (_roomMachine == null)
            {
                throw new Exception();
            }

            var roomsStates   = (RoomsStates)states;
            var roomsTriggers = (RoomsTriggers)triggers;


            foreach (var roomState in roomsStates.rooms)
            {
                _roomMachine.Configure(roomState)
                .OnEntry(() => _transitionHandler.HandleEntry(roomState))
                .OnExit(() => _transitionHandler.HandleExit(roomState));

                if (!(String.IsNullOrEmpty(roomState.north)))
                {
                    _roomMachine.Configure(roomState)
                    .Permit(roomsTriggers.Fetch <RoomsTriggers.North>(), roomsStates.rooms.Single(rs => rs.id == roomState.north));
                }

                if (!(String.IsNullOrEmpty(roomState.south)))
                {
                    _roomMachine.Configure(roomState)
                    .Permit(roomsTriggers.Fetch <RoomsTriggers.South>(), roomsStates.rooms.Single(rs => rs.id == roomState.south));
                }

                if (!(String.IsNullOrEmpty(roomState.east)))
                {
                    _roomMachine.Configure(roomState)
                    .Permit(roomsTriggers.Fetch <RoomsTriggers.East>(), roomsStates.rooms.Single(rs => rs.id == roomState.east));
                }

                if (!(String.IsNullOrEmpty(roomState.west)))
                {
                    _roomMachine.Configure(roomState)
                    .Permit(roomsTriggers.Fetch <RoomsTriggers.West>(), roomsStates.rooms.Single(rs => rs.id == roomState.west));
                }

                if (!(String.IsNullOrEmpty(roomState.up)))
                {
                    _roomMachine.Configure(roomState)
                    .Permit(roomsTriggers.Fetch <RoomsTriggers.Up>(), roomsStates.rooms.Single(rs => rs.id == roomState.up));
                }

                if (!(String.IsNullOrEmpty(roomState.down)))
                {
                    _roomMachine.Configure(roomState)
                    .Permit(roomsTriggers.Fetch <RoomsTriggers.Down>(), roomsStates.rooms.Single(rs => rs.id == roomState.down));
                }
            }
        }
Example #2
0
        public void Configure(IStates states, ITriggers triggers)
        {
            if (_gameMachine == null)
            {
                throw new Exception();
            }

            var gameState   = (GameStates)states;
            var gameTrigger = (GameTriggers)triggers;


            _gameMachine.Configure(gameState.Fetch <GameStates.Exited>())
            .OnEntry(() => _transitionHandler.HandleEntry(gameState.Fetch <GameStates.Exited>()));

            _gameMachine.Configure(gameState.Fetch <GameStates.Inactive>())
            .OnEntry(() => _transitionHandler.HandleEntry(gameState.Fetch <GameStates.Inactive>()))
            .Permit(gameTrigger.Fetch <GameTriggers.Exit>(), gameState.Fetch <GameStates.Exited>())
            .Permit(gameTrigger.Fetch <GameTriggers.Begin>(), gameState.Fetch <GameStates.Active>());

            _gameMachine.Configure(gameState.Fetch <GameStates.Running>());

            _gameMachine.Configure(gameState.Fetch <GameStates.Active>())
            .SubstateOf(gameState.Fetch <GameStates.Running>())
            .OnEntry(() => _transitionHandler.HandleEntry(gameState.Fetch <GameStates.Active>()))
            .OnExit(() => _transitionHandler.HandleExit(gameState.Fetch <GameStates.Active>()))
            .Permit(gameTrigger.Fetch <GameTriggers.End>(), gameState.Fetch <GameStates.Inactive>())
            .Permit(gameTrigger.Fetch <GameTriggers.Pause>(), gameState.Fetch <GameStates.Paused>());

            _gameMachine.Configure(gameState.Fetch <GameStates.Paused>())
            .SubstateOf(gameState.Fetch <GameStates.Running>())
            .OnEntry(() => _transitionHandler.HandleEntry(gameState.Fetch <GameStates.Paused>()))
            .Permit(gameTrigger.Fetch <GameTriggers.Resume>(), gameState.Fetch <GameStates.Active>())
            .Permit(gameTrigger.Fetch <GameTriggers.End>(), gameState.Fetch <GameStates.Inactive>());

            _gameMachine.Configure(gameState.Fetch <GameStates.Error>())
            .OnEntry(() => _transitionHandler.HandleEntry(gameState.Fetch <GameStates.Error>()));
        }