public async Task <string> GetSpellPathAsync(Champion champion, ChampionAbility spell) { var path = Path.Combine(_environment.WebRootPath, "spells"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } if (!System.IO.File.Exists($"{path}/{champion.Key}_{spell}.png")) { var content = await _httpClient.GetByteArrayAsync(champion.GetAbilityIconUrl(spell)); await System.IO.File.WriteAllBytesAsync($"{path}/{champion.Key}_{spell}.png", content); } return($"/spells/{champion.Key}_{spell}.png"); }
/// <summary> /// Render the post selection grid after locked in /// </summary> /// <param name="selection">Details of champion you want to render</param> internal void RenderLockInGrid(PlayerChampionSelectionDTO selection) { ChampionSelectListView.Visibility = Visibility.Hidden; AfterChampionSelectGrid.Visibility = Visibility.Visible; LockInButton.Content = "Locked In"; // champions Champion = champions.GetChampion(selection.ChampionId); SkinSelectListView.Items.Clear(); AbilityListView.Items.Clear(); //Render default skin ListViewItem item = new ListViewItem(); Image skinImage = new Image(); string uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", Champion.portraitPath); skinImage.Source = Client.GetImage(uriSource); skinImage.Width = 191; skinImage.Stretch = Stretch.UniformToFill; item.Tag = "0:" + Champion.id; //Hack item.Content = skinImage; SkinSelectListView.Items.Add(item); //Render abilities List <championAbilities> Abilities = championAbilities.GetAbilities(selection.ChampionId); foreach (championAbilities ability in Abilities) { ChampionAbility championAbility = new ChampionAbility(); uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "abilities", ability.iconPath); championAbility.AbilityImage.Source = Client.GetImage(uriSource); championAbility.AbilityHotKey.Content = ability.hotkey; championAbility.AbilityName.Content = ability.name; championAbility.AbilityDescription.Text = ability.description; championAbility.Width = 375; championAbility.Height = 75; AbilityListView.Items.Add(championAbility); } //Render champions foreach (ChampionDTO champ in ChampList) { if (champ.ChampionId == selection.ChampionId) { foreach (ChampionSkinDTO skin in champ.ChampionSkins) { if (skin.Owned) { item = new ListViewItem(); skinImage = new Image(); uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", championSkins.GetSkin(skin.SkinId).portraitPath); skinImage.Source = Client.GetImage(uriSource); skinImage.Width = 191; skinImage.Stretch = Stretch.UniformToFill; item.Tag = skin.SkinId; item.Content = skinImage; SkinSelectListView.Items.Add(item); } } } } }
/// <summary> /// Gets the icon's url of the specified ability. /// </summary> /// <param name="ability"> /// The ability to get. /// </param> public string GetAbilityIconUrl(ChampionAbility ability) => $"{DataDragonClient.CommunityDragonUrl}{Version}/champion/{Id}/ability-icon/{ability.ToLower()}";
/// <summary> /// Render the post selection grid after locked in /// </summary> /// <param name="selection">Details of champion you want to render</param> internal void RenderLockInGrid(PlayerChampionSelectionDTO selection) { champions Champion = champions.GetChampion(selection.ChampionId); if (Champion == null) { return; } ChampionSelectListView.Visibility = Visibility.Hidden; AfterChampionSelectGrid.Visibility = Visibility.Visible; LockInButton.Content = "Locked In"; SkinSelectListView.Items.Clear(); AbilityListView.Items.Clear(); //Render default skin ListViewItem item = new ListViewItem(); Image skinImage = new Image(); string uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", Champion.portraitPath); skinImage.Source = Client.GetImage(uriSource); skinImage.Width = 191; skinImage.Stretch = Stretch.UniformToFill; item.Tag = "0:" + Champion.id; //Hack item.Content = skinImage; SkinSelectListView.Items.Add(item); //Render abilities foreach (Spell ability in Champion.Spells) { ChampionAbility championAbility = new ChampionAbility(); championAbility.DataContext = ability; uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "spell", ability.Image); championAbility.AbilityImage.Source = Client.GetImage(uriSource); championAbility.Width = 375; championAbility.Height = 75; AbilityListView.Items.Add(championAbility); } //Render champions foreach (ChampionDTO champ in ChampList) { if (champ.ChampionId == selection.ChampionId) { foreach (ChampionSkinDTO skin in champ.ChampionSkins) { if (skin.Owned) { item = new ListViewItem(); skinImage = new Image(); uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", championSkins.GetSkin(skin.SkinId).portraitPath); skinImage.Source = Client.GetImage(uriSource); skinImage.Width = 191; skinImage.Stretch = Stretch.UniformToFill; item.Tag = skin.SkinId; item.Content = skinImage; SkinSelectListView.Items.Add(item); } } } } }