//request from client (fired by client) CurrentPlayersListDataResponse IMakaoGameHostService.GetCurrentPlayersInTheRoomData() { List <PlayersInRoomData> responseList = new List <PlayersInRoomData>(); foreach (PlayerData item in MakaoEngineHostDataPlaceholders.PlayersData) { PlayersInRoomData onePlayerData = new PlayersInRoomData() { PlayerName = item.PlayerName, PlayedGames = item.PlayedGames, PlayedAndWonGames = item.PlayedAndWonGames, Endpoint = item.PlayerEndpoint, IsHost = item.IsHostPlayer, PlayerID = item.PlayerID, PlayerNumber = item.PlayerNumber, ReadyToPlay = item.ReadyToPlay, }; responseList.Add(onePlayerData); } CurrentPlayersListDataResponse response = new CurrentPlayersListDataResponse { CurrentPLayersData = responseList, RoomIsFull = MakaoEngineHostDataPlaceholders.CheckIfRoomIsFull(), }; return(response); }
//method that gets data from host private CurrentPlayersListDataResponse GetCurrentPlayersDataFromHost() { IMakaoGameHostService proxy = factory.CreateChannel(); CurrentPlayersListDataResponse response = proxy.GetCurrentPlayersInTheRoomData(); return(response); }
//provide list of playersNumbers private List <int> GetPlayersNumbersList(CurrentPlayersListDataResponse response) { List <int> returnList = new List <int>(); foreach (var item in response.CurrentPLayersData) { int newNumber = item.PlayerNumber; returnList.Add(newNumber); } return(returnList); }
//displaying data aboout all users in the list view private void DisplayAllUsersDataInListView(CurrentPlayersListDataResponse response) { CurrentPlayersList.Items.Clear(); playersList.Clear(); foreach (PlayersInRoomData item in response.CurrentPLayersData) { AddPlayerToList(GetAvatarFullName(item.PlayerNumber), item.PlayerName, item.PlayedGames, item.PlayedAndWonGames, CheckIfPassedPlayerDataIsThisPlayersData(item), item.PlayerNumber, item.ReadyToPlay, item.PlayerID); } CheckIfPlayersAmountIsProper(); }
//method for implementation of obtaining players data from Host private void ObtainCurrentRoomPlayersDataFromhost(Uri endpoint) { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Info("Started obtaining players in room data from host."); StartNewFactoryChannel(endpoint); CurrentPlayersListDataResponse response = GetCurrentPlayersDataFromHost(); List <int> numbersList = GetPlayersNumbersList(response); DownloadPLayersAvatars(numbersList); SynchCont.Post(_ => DisplayAllUsersDataInListView(response), null); //event for enabling the menus in main window if (!response.RoomIsFull) { OnChangeAvailabilityOfMenus(); SynchCont.Post(_ => LeaveTheRoomButton.IsEnabled = true, null); } }