public async Task <IDictionary <ItemSlot.SlotHashes, Item> > ComputeMaxPower(DestinyCharacterComponent character, IEnumerable <DestinyInventoryComponent> characterEquipment, IEnumerable <DestinyInventoryComponent> characterInventories, DestinyInventoryComponent vault, IDictionary <long, DestinyItemInstanceComponent> itemInstances) { var items = await LoadItems(characterEquipment, characterInventories, vault, itemInstances); return(await ComputeMaxPower(character.ClassHash, items)); }
private Task <IEnumerable <Item> > LoadItems(IEnumerable <DestinyInventoryComponent> characterEquipment, IEnumerable <DestinyInventoryComponent> characterInventories, DestinyInventoryComponent vault, IDictionary <long, DestinyItemInstanceComponent> itemInstances) { var itemComponents = characterEquipment // Equipped items on all characters .Concat(characterInventories) // Items in all character inventories .SelectMany(group => group.Items) .Concat(vault.Items); // Items in the Vault return(LoadItems(itemComponents, itemInstances)); }
public async Task <IDictionary <long, IDictionary <ItemSlot.SlotHashes, Item> > > ComputeMaxPower(IDictionary <long, DestinyCharacterComponent> characters, IEnumerable <DestinyInventoryComponent> characterEquipment, IEnumerable <DestinyInventoryComponent> characterInventories, DestinyInventoryComponent vault, IDictionary <long, DestinyItemInstanceComponent> itemInstances) { var items = await LoadItems(characterEquipment, characterInventories, vault, itemInstances); var maxPowerTasks = characters.Select(async character => { return(character.Key, maxPower: await ComputeMaxPower(character.Value.ClassHash, items)); }); await Task.WhenAll(maxPowerTasks); return(maxPowerTasks.ToDictionary(item => item.Result.Key, item => item.Result.maxPower)); }