public void SetNewDeck(Deck deck, bool editing = false) { if (deck != null) { ClearNewDeckSection(); SelectDeck(null); EditingDeck = editing; if (editing) { editedDeckName = deck.Name; _originalDeck = deck; } _newDeck = (Deck)deck.Clone(); _newDeck.Cards.Clear(); foreach (var card in deck.GetSelectedDeckVersion().Cards) { _newDeck.Cards.Add(card.Clone() as Card); } _newDeck.SelectedVersion = _newDeck.Version; ListViewDeck.ItemsSource = _newDeck.Cards; Helper.SortCardCollection(ListViewDeck.ItemsSource, false); TextBoxDeckName.Text = _newDeck.Name; UpdateDeckHistoryPanel(deck, !editing); UpdateDbListView(); ExpandNewDeck(); UpdateCardCount(); ManaCurveMyDecks.SetDeck(_newDeck); } }
public void SetDeck(Deck deck) { if (deck == null) { ClearDeck(); return; } _deck = deck; deck.GetSelectedDeckVersion().Cards.CollectionChanged += (sender, args) => UpdateValues(); UpdateValues(); }
public void SetDeck(Deck deck) { if (deck == null) { ClearDeck(); return; } _deck = deck; deck.GetSelectedDeckVersion().Cards.CollectionChanged += (sender, args) => UpdateValues(); UpdateValues(); ItemsControlMechanics.ItemsSource = deck.Mechanics; }
public void SetDeck(Deck deck) { if (deck == null) { ClearDeck(); TextBlockNoMechanics.Visibility = Visible; return; } _deck = deck; deck.GetSelectedDeckVersion().Cards.CollectionChanged += (sender, args) => UpdateValues(); UpdateValues(); ItemsControlMechanics.ItemsSource = deck.Mechanics; TextBlockNoMechanics.Visibility = deck.Mechanics.Any() ? Collapsed : Visible; }
private async void ExportDeck(Deck deck) { var export = true; if (Config.Instance.ShowExportingDialog) { var message = string.Format( "1) create a new, empty {0}-Deck {1}.\n\n2) leave the deck creation screen open.\n\n3)do not move your mouse or type after clicking \"export\"", deck.Class, (Config.Instance.AutoClearDeck ? "(or open an existing one to be cleared automatically)" : "")); if (deck.GetSelectedDeckVersion().Cards.Any(c => c.Name == "Stalagg" || c.Name == "Feugen")) { message += "\n\nIMPORTANT: If you own golden versions of Feugen or Stalagg please make sure to configure\nOptions > Other > Exporting"; } var settings = new MetroDialogSettings { AffirmativeButtonText = "export" }; var result = await this.ShowMessageAsync("Export " + deck.Name + " to Hearthstone", message, MessageDialogStyle.AffirmativeAndNegative, settings); export = result == MessageDialogResult.Affirmative; } if (export) { var controller = await this.ShowProgressAsync("Creating Deck", "Please do not move your mouse or type."); Topmost = false; await Task.Delay(500); await DeckExporter.Export(deck); await controller.CloseAsync(); if (deck.MissingCards.Any()) { this.ShowMissingCardsMessage(deck); } } }
public static string DeckToIdString(Deck deck) => deck.GetSelectedDeckVersion().Cards.Aggregate("", (current, card) => current + (card.Id + ":" + card.Count + ";"));
public void UpdateValues() { if (_deck == null) { return; } var counts = new int[8]; var weapons = new int[8]; var spells = new int[8]; var minions = new int[8]; foreach (var card in _deck.GetSelectedDeckVersion().Cards) { if (card.Cost >= 7) { switch (card.Type) { case "Weapon": weapons[7] += card.Count; break; case "Enchantment": case "Spell": spells[7] += card.Count; break; case "Minion": minions[7] += card.Count; break; } counts[7] += card.Count; } else { switch (card.Type) { case "Weapon": weapons[card.Cost] += card.Count; break; case "Enchantment": case "Spell": spells[card.Cost] += card.Count; break; case "Minion": minions[card.Cost] += card.Count; break; } counts[card.Cost] += card.Count; } } var max = 0; for (var i = 0; i < 8; i++) { var sum = weapons[i] + spells[i] + minions[i]; if (sum > max) { max = sum; } } for (var i = 0; i < 8; i++) { if (max == 0) { _manaCostBars[i].SetValues(0, 0, 0, 0); _manaCostBars[i].SetTooltipValues(0, 0, 0); } else { _manaCostBars[i].SetValues(100d * weapons[i] / max, 100d * spells[i] / max, 100d * minions[i] / max, counts[i]); _manaCostBars[i].SetTooltipValues(weapons[i], spells[i], minions[i]); } } }
public void UpdateValues() { if (_deck == null) { return; } var counts = new int[8]; var weapons = new int[8]; var spells = new int[8]; var minions = new int[8]; foreach (var card in _deck.GetSelectedDeckVersion().Cards) { var statValue = -1; switch (Config.Instance.ManaCurveFilter) { case Mana: statValue = card.Cost; break; case Health: statValue = card.Health; break; case Attack: statValue = card.Attack; break; case Overload: statValue = card.Overload; break; } if (statValue == -1) { continue; } if (statValue >= 7) { switch (card.Type) { case Weapon: weapons[7] += card.Count; break; case Enchantment: case Spell: spells[7] += card.Count; break; case Minion: minions[7] += card.Count; break; } counts[7] += card.Count; } else { if (Config.Instance.ManaCurveFilter == Mana || Config.Instance.ManaCurveFilter == Overload) { switch (card.Type) { case Weapon: weapons[statValue] += card.Count; break; case Enchantment: case Spell: spells[statValue] += card.Count; break; case Minion: minions[statValue] += card.Count; break; } counts[statValue] += card.Count; } else if (card.Type == Minion) { minions[statValue] += card.Count; counts[statValue] += card.Count; } } } var max = 0; for (var i = 0; i < 8; i++) { var sum = weapons[i] + spells[i] + minions[i]; if (sum > max) { max = sum; } } for (var i = 0; i < 8; i++) { if (max == 0) { _manaCostBars[i].SetValues(0, 0, 0, 0); _manaCostBars[i].SetTooltipValues(0, 0, 0); } else { _manaCostBars[i].SetValues(100d * weapons[i] / max, 100d * spells[i] / max, 100d * minions[i] / max, counts[i]); _manaCostBars[i].SetTooltipValues(weapons[i], spells[i], minions[i]); } } }
public void SetDeck(Deck deck) { _deck = deck; deck.GetSelectedDeckVersion().Cards.CollectionChanged += (sender, args) => UpdateValues(); UpdateValues(); }
internal Deck GetSelectedDeckVersion() { return(SelectedDeck != null?SelectedDeck.GetSelectedDeckVersion() : null); }