/// <summary> /// Возвращает список полученных игр /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GetAvailableGames(object sender, ResponseEventArgs e) { GetListGamesResponse response = e.Response as GetListGamesResponse; if (response != null) { if (response.Games != null) { //Список создателей, которые уже есть у нас в списке List <DTOUser> creators = new List <DTOUser>(); foreach (var game in _games) { creators.Add(game.Creator); } //Добавляем новые игры, которых у нас нету в списке List <DTOAwaitingGame> newGames = response.Games.ToList(); foreach (var game in newGames) { DTOUser creator = creators.FirstOrDefault(c => c.Login.Equals(game.Creator.Login)); if (creator == null) { _games.Add(game); } } //Удаляем игры которых у же нету в списке, который пришел foreach (var creator in creators) { var removedCreator = newGames.FirstOrDefault(g => g.Creator.Login.Equals(creator.Login)); if (removedCreator == null) { var game = _games.First(g => g.Creator.Login.Equals(creator.Login)); _games.Remove(game); } } } } }
public void GetListAvailableGamesCallback(GetListGamesResponse response) { syncContext.Post(new SendOrPostCallback(OnBroadcast <GetListGamesResponse>), response); }