public async Task <IEnumerable <Perk> > LoadPerks(DestinyItemSocketState socket) { if (socket.ReusablePlugs != null) { var tasks = socket.ReusablePlugs.Select(reusablePlug => { var isSelected = reusablePlug.PlugItemHash == socket.PlugHash; return(LoadPerk(reusablePlug.PlugItemHash, isSelected)); }); var perks = await Task.WhenAll(tasks); if (!perks.Any(perk => perk.Hash == socket.PlugHash)) { var selectedPerk = await LoadPerk(socket.PlugHash, true); return(perks.Concat(new[] { selectedPerk })); } return(perks); } var singlePerk = await LoadPerk(socket.PlugHash, true); return(new[] { singlePerk }); }
private async Task <Socket> CreateSocket(DestinyItemSocketEntryDefinition socketEntry, DestinySocketTypeDefinition socketType, DestinySocketCategoryDefinition categoryDef, DestinyItemSocketState socketState) { Perk selectedPerk = null; if (socketState.PlugHash != 0) { selectedPerk = await _perkFactory.LoadPerk(socketState.PlugHash, true); } return(new Socket(selectedPerk, null)); }