Exemplo n.º 1
0
        private void OnIntAction(string obj, ICommunication communication)
        {
            if (isConnected | !Searched)
            {
                _errorMsg = "Error: " + "This command does not exist or isn't enabled at this time";
                return;
            }
            int chosenServerId = Int32.Parse(obj);

            if (_ActionHanlder._serverDictionary.Count >= chosenServerId)
            {
                PROT_BROADCAST current = _ActionHanlder.GetServer(chosenServerId - 1);
                communication._client.Connect(IPAddress.Parse(current._Server_ip), 8080);
                _afterConnectMsg = $"Server {chosenServerId} chosen";
                isConnected      = true;
            }
            else
            {
                _afterConnectMsg = "no Server with this indentifier";
            }
        }
Exemplo n.º 2
0
        public void StateMachine()
        {
            State = ClientStates.NotConnected;

            while (_isRunning)
            {
                switch (State)
                {
                case ClientStates.NotConnected:
                    _inputHandler._inputActions.Add("/search", _inputHandler.OnSearchAction);
                    _inputHandler._inputActions.Add("/someInt", _inputHandler.OnServerConnectAction);
                    _inputHandler._inputActions.Add("/closegame", _inputHandler.OnCloseGameAction);
                    //_actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.UpdateView, _actionHandler.OnUpdateAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.Broadcast, _actionHandler.OnBroadcastAction);
                    while (State == ClientStates.NotConnected)
                    {
                    }
                    Debug.WriteLine($"State switched: From: {State.ToString()}");
                    break;

                case ClientStates.Connecting:
                    Debug.WriteLine($"State switched: From NotConnected To {State.ToString()}");
                    _inputHandler._inputActions.Clear();
                    _actionHandler._protocolActions.Clear();
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.ValidationRequest, _actionHandler.OnValidationRequestAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.ValidationAccepted, _actionHandler.OnValidationAcceptedAction);

                    //hier
                    BroadcastDTO current = _actionHandler.GetServer((int)_metaData - 1);
                    _communication._client.Connect(IPAddress.Parse(current._server_ip), current._server_Port);
                    _communication.SetNWStream();

                    while (State == ClientStates.Connecting)
                    {
                    }
                    break;

                case ClientStates.WaitingForLobbyCheck:
                    Debug.WriteLine($"State switched: From Connecting To {State.ToString()}");
                    _inputHandler._inputActions.Add("/closegame", _inputHandler.OnCloseGameAction);
                    _actionHandler._protocolActions.Clear();
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.AcceptInfo, _actionHandler.OnAcceptInfoAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.DeclineInfo, _actionHandler.OnDeclineInfoAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.LobbyCheckFailed, _actionHandler.OnLobbyCheckFailedAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.LobbyCheckSuccessful, _actionHandler.OnLobbyCheckSuccessfulAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.UpdateView, _actionHandler.OnUpdateAction);
                    while (State == ClientStates.WaitingForLobbyCheck)
                    {
                    }
                    break;

                case ClientStates.Lobby:
                    Debug.WriteLine($"State switched: From WaitingForLobbycheck To {State.ToString()}");
                    _actionHandler._protocolActions.Clear();
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.AcceptInfo, _actionHandler.OnAcceptInfoAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.UpdateView, _actionHandler.OnUpdateAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.ServerStartingGame, _actionHandler.OnServerStartingGameAction);
                    _inputHandler._inputActions.Add("/startgame", _inputHandler.OnStartGameAction);
                    _inputHandler._inputActions.Add("/classic", _inputHandler.OnClassicAction);
                    while (State == ClientStates.Lobby)
                    {
                    }
                    break;

                case ClientStates.GameRunning:
                    Debug.WriteLine($"State switched: From Lobby To {State.ToString()}");
                    _game.CreateRules();
                    _game.Rules.SetupEntitites();
                    _game.MakeBoardView();

                    _actionHandler._protocolActions.Clear();
                    _inputHandler._inputActions.Clear();
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.UpdateView
                                                        , _actionHandler.OnUpdateAction);
                    _actionHandler._protocolActions.Add(Shared.Enums.ProtocolActionEnum.TurnResult
                                                        , _actionHandler.OnTurnResultAction);
                    _inputHandler._inputActions.Add("/rolldice", _inputHandler.OnInputRollDiceAction);
                    _inputHandler._inputActions.Add("/help", _inputHandler.OnInputHelpAction);
                    _inputHandler._inputActions.Add("/closegame", _inputHandler.OnCloseGameAction);

                    while (State == ClientStates.GameRunning)
                    {
                    }
                    break;
                }
            }
        }