Ejemplo n.º 1
0
        public void Start(string ip)
        {
            ClientBridge.Connect(ip, playerName);

            var iterations = 0;

            do
            {
                Thread.Sleep(250);
                ProcessPackets();

                iterations++;
                if (iterations >= 20)
                {
                    break;
                }
            } while (ClientBridge.CurrentState == ClientBridgeState.WaitingForRerservation);

            switch (ClientBridge.CurrentState)
            {
            case ClientBridgeState.Reserved:
                ClientBridge.ClaimReservation();
                Log.InGame("Connected to server");
                break;

            default:
                Log.InGame("Unable to connect to server");
                break;
            }
        }
Ejemplo n.º 2
0
 public MultiplayerClient(string playerId)
 {
     Log.SetLevel(Log.LogLevel.ConsoleInfo | Log.LogLevel.ConsoleDebug);
     playerName     = playerId;
     visibleCells   = new VisibleCells();
     packetReceiver = new DeferringPacketReceiver(visibleCells);
     client         = new TcpClient(packetReceiver);
     ClientBridge   = new ClientBridge(client);
     PacketSender   = ClientBridge;
     Logic          = new Logic(ClientBridge, visibleCells, packetReceiver);
 }
Ejemplo n.º 3
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello Patterns!\n");

            ClientComposite.ExecuteScript();
            ClientStrategy.ExecuteScript();
            ClientDecorator.ExecuteScript();
            ClientAbstractFactory.ExecuteScript();
            ClientBridge.ExecuteScript();
            ClientCommand.ExecuteScript();
            ClientIterator.ExecuteScript();
            ClientVisitor.ExecuteScript();
        }
        public void GivenAnInitializedClientBridge()
        {
            //Given
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(false);
            serverClient
            .When(client => client.Start(Arg.Any <string>()))
            .Do(info => serverClient.IsConnected.Returns(true));

            serverClient
            .When(client => client.Send(Arg.Any <ReservePlayerSlot>()))
            .Do(info => correlationId = info.Arg <ReservePlayerSlot>().CorrelationId);

            clientBridge = new ClientBridge(serverClient);
        }
Ejemplo n.º 5
0
        public void ShouldNotStartAConnectedClient()
        {
            //Arrange
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(true);

            ClientBridge clientBridge = new ClientBridge(serverClient);

            //Act
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);

            //Assert
            serverClient.DidNotReceive().Start(Arg.Any <string>());
            clientBridge.CurrentState.Should().Be(ClientBridgeState.WaitingForRerservation);
        }
Ejemplo n.º 6
0
        public void GivenAClientBridgeThatIsWaitingForAReservation()
        {
            //Given
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(false);
            serverClient
            .When(client => client.Start(Arg.Any <string>()))
            .Do(info => serverClient.IsConnected.Returns(true));

            serverClient
            .When(client => client.Send(Arg.Any <ReservePlayerSlot>()))
            .Do(info => correlationId = info.Arg <ReservePlayerSlot>().CorrelationId);

            clientBridge = new ClientBridge(serverClient);
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);
        }
Ejemplo n.º 7
0
        public void TheBridgeShouldBeInTheWaitingStateAfterConnecting()
        {
            //Arrange
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(false);
            serverClient
            .When(client => client.Start(Arg.Any <string>()))
            .Do(info => serverClient.IsConnected.Returns(true));

            ClientBridge clientBridge = new ClientBridge(serverClient);

            //Act
            clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);

            //Assert
            clientBridge.CurrentState.Should().Be(ClientBridgeState.WaitingForRerservation);
        }
Ejemplo n.º 8
0
        public void ConnectShouldThrowClientConnectionFailedExceptionAndBeInFaultedStateOnFailure()
        {
            //Arrange
            IClient serverClient = Substitute.For <IClient>();

            serverClient.IsConnected.Returns(false);
            serverClient
            .When(client => client.Start(Arg.Any <string>()))
            .Throw <Exception>();

            ClientBridge clientBridge = new ClientBridge(serverClient);

            //Act
            Action action = () => clientBridge.Connect(TestConstants.TEST_IP_ADDRESS, TestConstants.TEST_PLAYER_NAME);

            //Assert
            action.ShouldThrow <ClientConnectionFailedException>();
            clientBridge.CurrentState.Should().Be(ClientBridgeState.Failed);
        }
 public PlayerSlotReservationProcessor(ClientBridge clientBridge)
 {
     this.clientBridge = clientBridge;
 }