示例#1
0
        //processing response obtained from host
        private void ProcessJoiningTheRoomResponse(AddNewPlayerResponse response)
        {
            if (response != null)
            {
                //not added to game
                if (!response.AddedToGame)
                {
                    var logger = NLog.LogManager.GetCurrentClassLogger();
                    logger.Info("The endpoint didn't joi the player to the room");

                    //if host did not add player to the room, return to main thread and
                    //show message
                    SynchCont.Post(_ => NotAddedToTheRoomMessageBoxShow(), null);
                }
                else
                {
                    var logger = NLog.LogManager.GetCurrentClassLogger();
                    logger.Info("Player successfully joined the room. Player Number: " + response.PlayerNumber.ToString());

                    //assign player daya
                    MainWindow.IsHostPlayer = response.IsHostPlayer;
                    MainWindow.PlayerID     = response.PlayerID;
                    MainWindow.PlayerNumber = response.PlayerNumber;
                    MainWindow.TotalAMountOfPlayerObtainedFromHost = response.TotalAMountOfPlayers;

                    //assign app type
                    MainWindow.ChangeGameStatus(response.IsHostPlayer);

                    //send an avatar image to the host
                    SendAvatarImageToHost(response.PlayerNumber);
                }
            }
        }
示例#2
0
        //task algorithm
        private void JoinTheGame(Uri hostEndpoint, Uri clientEndpoint, string password)
        {
            StartNewFactoryChannel(hostEndpoint);
            AddNewPlayerResponse response = ObtainJoiningResult(clientEndpoint, password);

            ProcessJoiningTheRoomResponse(response);
        }
示例#3
0
        //sending the request to the host
        private AddNewPlayerResponse ObtainJoiningResult(Uri clientEndpoint, string password)
        {
            AddNewPlayerRequest request = new AddNewPlayerRequest()
            {
                PlayerName        = MainWindow.SavedData.CurrentPlayerName,
                PlayedGames       = MainWindow.SavedData.SavedAmountOfPlayedGames,
                PlayedAndWonGames = MainWindow.SavedData.SavedAmountOfPlayedAndWonGames,
                PlayerEndpoint    = clientEndpoint,
                Password          = password,
            };

            IMakaoGameHostService proxy = factory.CreateChannel();

            try
            {
                AddNewPlayerResponse response = proxy.AddNotHostPlayerToTheRoom(request);
                return(response);
            }
            catch (Exception ex)
            {
                var logger = NLog.LogManager.GetCurrentClassLogger();
                logger.Error($"Error while trying to send password to host: {ex.Message}");
                return(null);
            }
        }
        //method that does the job - adding player in data placeholder static class
        private AddNewPlayerResponse AddPlayerToTheRoom(AddNewPlayerRequest request, bool hostPlayer)
        {
            //assign data (Property is only readable)
            (bool added, int playerNumber) = MakaoEngineHostDataPlaceholders.AddNewPlayerToTheRoom(request, hostPlayer);
            AddNewPlayerResponse response;

            if (added)
            {
                //find player with specific number
                PlayerData playerData = MakaoEngineHostDataPlaceholders.PlayersData.Single(p => p.PlayerNumber == playerNumber);

                //create response (player number = 0)
                response = new AddNewPlayerResponse()
                {
                    PlayerName           = playerData.PlayerName,
                    PlayedGames          = playerData.PlayedGames,
                    PlayedAndWonGames    = playerData.PlayedAndWonGames,
                    PlayerID             = playerData.PlayerID,
                    PlayerNumber         = playerData.PlayerNumber,
                    IsHostPlayer         = playerData.IsHostPlayer,
                    AddedToGame          = added,
                    TotalAMountOfPlayers = MakaoEngineHostDataPlaceholders.TotalAmountOfPLayers,
                };

                var logger = NLog.LogManager.GetCurrentClassLogger();
                logger.Info("Added new player to the room - player " + response.PlayerNumber.ToString());
            }
            else
            {
                //create response (player number = -1)
                response = new AddNewPlayerResponse()
                {
                    PlayerName   = "",
                    PlayedGames  = 0,
                    PlayerID     = "",
                    PlayerNumber = -1,
                    AddedToGame  = added,
                };

                var logger = NLog.LogManager.GetCurrentClassLogger();
                logger.Info("Adding new player to the room failed...");
            }

            return(response);
        }
示例#5
0
        //method for adding the host player to the room
        public static AddNewPlayerResponse AddHostPlayerToRoom()
        {
            //create the request
            AddNewPlayerRequest addPlayerRequest = new AddNewPlayerRequest()
            {
                PlayerName        = MainWindow.SavedData.CurrentPlayerName,
                PlayedGames       = MainWindow.SavedData.SavedAmountOfPlayedGames, PlayerEndpoint = MainWindow.ThisClientEndpoint, Password = password,
                PlayedAndWonGames = MainWindow.SavedData.SavedAmountOfPlayedAndWonGames
            };

            //creating new proxy
            IMakaoGameHostService proxy = factory.CreateChannel();

            //sending data without an image
            AddNewPlayerResponse response = proxy.CreateNewRoomAndHostPlayer(addPlayerRequest);

            //if user was added to room
            if (response.AddedToGame)
            {
                //assigning an ID for player
                MainWindow.PlayerID     = response.PlayerID;
                MainWindow.PlayerNumber = response.PlayerNumber;
                MainWindow.IsHostPlayer = response.IsHostPlayer;
                MainWindow.TotalAMountOfPlayerObtainedFromHost = response.TotalAMountOfPlayers;

                //assign data to player info storage in client service
                CurrentPlayerDataStorage.PlayerNumber = response.PlayerNumber;
                CurrentPlayerDataStorage.PlayerID     = response.PlayerID;
                CurrentPlayerDataStorage.PlayerName   = response.PlayerName;

                //change app status
                MainWindow.ChangeGameStatus(response.IsHostPlayer);

                //sending data with image
                MemoryStream avatarMemoryStream = new MemoryStream();
                byte[]       bytes = File.ReadAllBytes(MainWindow.SavedData.CurrentAvatarPicture);
                avatarMemoryStream.Write(bytes, 0, bytes.Length);
                avatarMemoryStream.Position = 0;

                //calling method for sending to and downloding avatar from host
                SendAnImage(avatarMemoryStream, response.PlayerNumber, proxy);
            }

            return(response);
        }