private PlayingGame initPlayingGame(string player1, string player2, IConnectFourServiceCallback player1CallBack, IConnectFourServiceCallback player2CallBack) { PlayingGame game = new PlayingGame(); game.GameStartTime = DateTime.Now; game.Turn = player1; game.Player1 = player1; game.Player2 = player2; game.CallBackPlayer1 = player1CallBack; game.CallBackPlayer2 = player2CallBack; game.Board = new ConnectFourBoard(6, 7); return(game); }
public void Connect(string username) { if (clients.ContainsKey(username)) { UserAlreadyLoggedInFault fault = new UserAlreadyLoggedInFault() { Message = "Username " + username + " already logged in, exiting.." }; throw new FaultException <UserAlreadyLoggedInFault>(fault); } IConnectFourServiceCallback callback = OperationContext.Current.GetCallbackChannel <IConnectFourServiceCallback>(); clients.Add(username, callback); Thread updateThread = new Thread(() => AddToClientListThreadingFunction(username, callback)); updateThread.Start(); }
private void AddToClientListThreadingFunction(string username, IConnectFourServiceCallback callback) { //Update rest clients with the new client instead of new one List <string> connclients = new List <String>(); connclients.Add(username); foreach (KeyValuePair <string, IConnectFourServiceCallback> client in clients) { if (client.Key != username) { client.Value.addUsersToList(connclients); } } //update new one with the rest of clients connclients = new List <String>(clients.Keys); connclients.Remove(username); callback.addUsersToList(connclients); }
private int initGameThread(string player1, string player2) { IConnectFourServiceCallback player1CallBack = null; IConnectFourServiceCallback player2CallBack = null; foreach (KeyValuePair <string, IConnectFourServiceCallback> client in clients) { if (client.Key == player1) { player1CallBack = client.Value; } if (client.Key == player2) { player2CallBack = client.Value; } } if (player1CallBack == null) { throwUserNotFoundFault(player1); } else if (player2CallBack == null) { throwUserNotFoundFault(player2); } currentGames.Add(currentGameId, initPlayingGame(player1, player2, player1CallBack, player2CallBack)); //Send to player2 the gameId, player1 will get the gameId from function return value InitGameResult game = new InitGameResult(); game.Player1 = player1; game.Player2 = player2; game.gameId = currentGameId; player2CallBack.sendGameInfo(game); return(currentGameId++); }