// Input: Two players // Output: the game Id which identifies the key of the dictionary of the game between the two players public InitGameResult InitGame(string player1, string player2) { int gameId = 0; Thread t = new Thread(() => { gameId = initGameThread(player1, player2); }); t.Start(); t.Join(); cs.updateUserStatus(player1, USER_STATUS.PLAYING); cs.updateUserStatus(player2, USER_STATUS.PLAYING); InitGameResult res = new InitGameResult(); res.Player1 = player1; res.Player2 = player2; res.gameId = gameId; return(res); }
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++); }