コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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++);
        }