private async Task InitializeAsync(HttpClient Http, WeaponTypeData weaponTypeData) { // Wait for WeaponTypeData to finish loading first so the UI can show faster. // Since weapons are only used in the background, we can wait. await weaponTypeData.Initialization; foreach (var uri in WeaponDataUris) { Weapons.AddRange(await Http.GetJsonAsync <List <Weapon> >(uri)); Console.WriteLine($"Loaded {uri}"); } Console.WriteLine($"Loaded {Weapons.Count} weapons."); }
public async Task <string> Create(WeaponTypeData TypeData) { await Initialization; string wishlistText = ""; foreach (var weapon in WeaponData.Weapons) { var subtype = TypeData.Types.Find(t => t.Name == weapon.WeaponType).Subtypes.Find(st => st.Name == weapon.WeaponSubtype); var perkHashesBySocket = new List <List <long> >(); foreach (var weaponSocket in weapon.Sockets) { var subtypeSocket = subtype.Sockets.Find(s => s.Name == weaponSocket.Name); var selectedPerkHashes = GetSelectedPerkHashes(subtypeSocket.Perks); if (selectedPerkHashes.Count == 0) { continue; } var matchingPerks = selectedPerkHashes.Where(ph => weaponSocket.Perks.Contains(ph)).ToList(); Console.WriteLine($"{weapon.Name} has {matchingPerks.Count} matching perks in socket {weaponSocket.Name}"); perkHashesBySocket.Add(matchingPerks); } List <string> combinations = GetPerkCombinations(perkHashesBySocket); foreach (var combo in combinations) { wishlistText += $"dimwishlist:item={weapon.Hash}&perks={combo}\n"; } } return(wishlistText); }
public WeaponData(HttpClient Http, WeaponTypeData weaponTypeData) { Weapons = new List <Weapon>(); Initialization = InitializeAsync(Http, weaponTypeData); }