Пример #1
0
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("Write the address of the server [127.0.0.1]:");
                string serverAddress = Console.ReadLine().Trim();
                if (serverAddress == string.Empty)
                {
                    serverAddress = "localhost";
                }

                Console.WriteLine($"Connecting to {serverAddress}.");

                var instanceContext = new InstanceContext(new CallbackImpl());

                IHanksiteService proxy = new DuplexChannelFactory <IHanksiteService>(
                    instanceContext,
                    new NetTcpBinding("hanksiteBinding"),
                    new EndpointAddress(new Uri($"net.tcp://{serverAddress}:8733/HanksiteService/"))
                    ).CreateChannel();

                while (true)
                {
                    string[] message = Console.ReadLine().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

                    if (message[0] == "register")
                    {
                        if (proxy.RegisterUser(message[1], message[2]) != null)
                        {
                            Console.WriteLine("Congrats, you have registered.");
                        }
                        else
                        {
                            Console.WriteLine("user already exists");
                        }
                    }
                    if (message[0] == "login")
                    {
                        if (proxy.ConnectUser(message[1], message[2]) != null)
                        {
                            Console.WriteLine("Congrats, you have logged in.");
                        }
                        else
                        {
                            Console.WriteLine("Invalid username or password.");
                        }
                    }
                    if (message[0] == "pwd")
                    {
                        if (proxy.ChangePassword(message[1], message[2]))
                        {
                            Console.WriteLine("Congrats, you have changed your password.");
                        }
                        else
                        {
                            Console.WriteLine("Wrong password.");
                        }
                    }
                    if (message[0] == "getplayedgames")
                    {
                        var playedGames = proxy.GetPlayedGames();
                        foreach (var playedGameInfo in playedGames)
                        {
                            Console.WriteLine(
                                $"Game: {playedGameInfo.Name}, Position: {playedGameInfo.Position}, Duration: {playedGameInfo.Duration.Seconds} seconds");
                        }
                    }
                    if (message[0] == "create")
                    {
                        proxy.CreateLobby(new LobbySettings
                        {
                            NumberOfColours = int.Parse(message[2]) + 4,
                            Name            = message[1],
                            NumberOfPlayers = int.Parse(message[2]),
                            BotNumbers      = new LobbySettingsBotNumber[] { new LobbySettingsBotNumber {
                                                                                 Difficulty = AIDifficulty.Hard, Number = int.Parse(message[3])
                                                                             } }
                        });
                    }
                    else if (message[0] == "list")
                    {
                        var lobbies = proxy.ListLobbies();
                        foreach (var lobby in lobbies)
                        {
                            Console.WriteLine(lobby.Name);
                        }
                    }
                    else if (message[0] == "connect")
                    {
                        if (proxy.ConnectToLobby(message[1]) == null)
                        {
                            Console.WriteLine("Connect unsuccesful.");
                        }
                        else
                        {
                            Console.WriteLine("Connect succesful.");
                        }
                    }
                    else if (message[0] == "disclobby")
                    {
                        proxy.DisconnectFromLobby();
                    }
                    else if (message[0] == "startgame")
                    {
                        proxy.StartGame();
                    }
                    else if (message[0] == "ready")
                    {
                        proxy.ClientReady();
                    }
                    else if (message[0] == "choosecolour")
                    {
                        proxy.ChooseColour(int.Parse(message[1]));
                    }
                    else if (message[0] == "discgame")
                    {
                        proxy.DisconnectFromGame();
                    }
                    else if (message[0] == "getrunninggames")
                    {
                        var runningGames = proxy.GetRunningGames();
                        if (runningGames.Length == 0)
                        {
                            Console.WriteLine("none");
                        }
                        else
                        {
                            foreach (var gameSnapshotForDisconnected in runningGames)
                            {
                                Console.WriteLine(
                                    $"ID: {gameSnapshotForDisconnected.ID}, Name: {gameSnapshotForDisconnected.Name}");
                            }
                        }
                    }
                    else if (message[0] == "reconnectgame")
                    {
                        proxy.ReconnectToGame(int.Parse(message[1]));
                    }
                    else if (message[0] == "exit")
                    {
                        break;
                    }
                }
            }
            catch (CommunicationException)
            {
                Console.WriteLine("The server is unavailable, shutting down.");
                Console.ReadKey();
            }
        }