public ConnectionStateMachine(MixedManager game)
    {
        _game = game;

        var startState        = new GameStartState(this, _game);
        var connectingState   = new GameConnectingState(this, _game);
        var connectedState    = new GameConnectedState(this, _game);
        var disconnectedState = new GameDisconnectedState(this, _game);
        var roomState         = new GameRoomState(this, _game);

        var stateList = new Dictionary <ConnectionFSMStateEnum.StateEnum, IFsmState>
        {
            { ConnectionFSMStateEnum.StateEnum.START, startState },
            { ConnectionFSMStateEnum.StateEnum.CONNECTING, connectingState },
            { ConnectionFSMStateEnum.StateEnum.CONNECTED, connectedState },
            { ConnectionFSMStateEnum.StateEnum.DISCONNECTED, disconnectedState },
            { ConnectionFSMStateEnum.StateEnum.ROOM, roomState },
        };

        SetStates(stateList);

        var allowedTransitions = new Dictionary <ConnectionFSMStateEnum.StateEnum, IList <ConnectionFSMStateEnum.StateEnum> >();

        allowedTransitions.Add(ConnectionFSMStateEnum.StateEnum.START, new List <ConnectionFSMStateEnum.StateEnum>
        {
            ConnectionFSMStateEnum.StateEnum.CONNECTING,
        });
        allowedTransitions.Add(ConnectionFSMStateEnum.StateEnum.CONNECTING, new List <ConnectionFSMStateEnum.StateEnum>
        {
            ConnectionFSMStateEnum.StateEnum.CONNECTED,
        });
        allowedTransitions.Add(ConnectionFSMStateEnum.StateEnum.CONNECTED, new List <ConnectionFSMStateEnum.StateEnum>
        {
            ConnectionFSMStateEnum.StateEnum.ROOM,
        });
        allowedTransitions.Add(ConnectionFSMStateEnum.StateEnum.DISCONNECTED, new List <ConnectionFSMStateEnum.StateEnum>
        {
            ConnectionFSMStateEnum.StateEnum.START,
        });
        allowedTransitions.Add(ConnectionFSMStateEnum.StateEnum.ROOM, new List <ConnectionFSMStateEnum.StateEnum>
        {
            ConnectionFSMStateEnum.StateEnum.START,
        });
        SetTransitions(allowedTransitions);
    }
Exemple #2
0
 public GameConnectingState(ConnectionStateMachine owner, MixedManager game) : base(owner)
 {
     _game = game;
 }