//Adding host player as new player (without info of avatar)
        AddNewPlayerResponse IMakaoGameHostService.CreateNewRoomAndHostPlayer(AddNewPlayerRequest request)
        {
            InfoSenderClass Sender = new InfoSenderClass();

            Sender.DeleteTheRoom(ClientInfoType.ClosedByHost);
            return(AddPlayerToTheRoom(request, true));
        }
Esempio n. 2
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 for adding host player to the list
        public static (bool, int) AddNewPlayerToTheRoom(AddNewPlayerRequest userRequestData, bool hostPlayer)
        {
            if (userRequestData.Password == currentGameSetup.RoomPassword)
            {
                //clear the list if it is host player
                if (hostPlayer)
                {
                    CurrentPlayersData.Clear();
                }

                //minimuma mount of plaers while joining the room
                int minimumAmountOfPlayers = 0;
                if (!hostPlayer)
                {
                    minimumAmountOfPlayers = 1;
                }

                //if there is free space in the room
                if (CurrentPlayersData.Count < currentGameSetup.AmountOfPlayers && CurrentPlayersData.Count >= minimumAmountOfPlayers)
                {
                    //add first player - the host
                    PlayerData playerData = new PlayerData()
                    {
                        PlayerName        = userRequestData.PlayerName,
                        PlayedGames       = userRequestData.PlayedGames,
                        PlayedAndWonGames = userRequestData.PlayedAndWonGames,
                        PlayerID          = GetUniqueID(),
                        PlayerEndpoint    = userRequestData.PlayerEndpoint,
                        PlayerNumber      = GetFirstNotAssignedPlayerNumber(),
                        IsHostPlayer      = hostPlayer,
                        ReadyToPlay       = false,
                    };
                    CurrentPlayersData.Add(playerData);

                    var logger = NLog.LogManager.GetCurrentClassLogger();
                    logger.Info("Current amount of players in the room is: " + CurrentPlayersData.Count.ToString());

                    //control joining timeout
                    ControlTimerForJoiningTimeout();

                    //control readiness timeout
                    ControlTimerForReadinessTimeout();

                    return(true, playerData.PlayerNumber);
                }
                else
                {
                    return(false, -1);
                }
            }
            else
            {
                return(false, -1);
            }
        }
        //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);
        }
Esempio n. 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);
        }
 //Add new player to the room - not host
 AddNewPlayerResponse IMakaoGameHostService.AddNotHostPlayerToTheRoom(AddNewPlayerRequest request)
 {
     return(AddPlayerToTheRoom(request, false));
 }