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(); } }