Beispiel #1
0
        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;
 }
Beispiel #4
0
 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);
                }
            }
        }
Beispiel #6
0
 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]);
                }
            }
        }
Beispiel #8
0
        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]);
                }
            }
        }
Beispiel #9
0
 public void SetDeck(Deck deck)
 {
     _deck = deck;
     deck.GetSelectedDeckVersion().Cards.CollectionChanged += (sender, args) => UpdateValues();
     UpdateValues();
 }
 internal Deck GetSelectedDeckVersion()
 {
     return(SelectedDeck != null?SelectedDeck.GetSelectedDeckVersion() : null);
 }