Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        public WeaponData(HttpClient Http, WeaponTypeData weaponTypeData)
        {
            Weapons = new List <Weapon>();

            Initialization = InitializeAsync(Http, weaponTypeData);
        }