public void SelectDeckAndAppropriateView(Deck deck)
        {
            if (deck == null)
            {
                return;
            }
            ClearFromCache(deck);
            if (Config.Instance.SelectedDeckType != DeckType.All)
            {
                if (deck.IsArenaDeck && Config.Instance.SelectedDeckType != DeckType.Arena)
                {
                    SelectDeckType(DeckType.Arena);
                }
                else if (!deck.IsArenaDeck && Config.Instance.SelectedDeckType != DeckType.Constructed)
                {
                    SelectDeckType(DeckType.Constructed);
                }
            }

            if (deck.Archived && !SelectedClasses.Contains(HeroClassAll.Archived))
            {
                SelectClass(HeroClassAll.Archived);
            }
            else if (!SelectedClasses.Contains(HeroClassAll.All))
            {
                HeroClassAll deckClass;
                if (Enum.TryParse(deck.Class, out deckClass))
                {
                    if (!SelectedClasses.Contains(deckClass))
                    {
                        SelectClass(deckClass);
                    }
                }
            }

            UpdateDecks(false);
            SelectDeck(deck);
            var dpi = _displayedDecks.FirstOrDefault(x => Equals(x.Deck, deck));

            if (dpi != null)
            {
                ListViewDecks.ScrollIntoView(dpi);
            }
        }
Exemplo n.º 2
0
        public void SelectDeckAndAppropriateView(Deck deck)
        {
            if (deck == null)
            {
                return;
            }
            ClearFromCache(deck);
            if (Config.Instance.SelectedDeckPickerDeckType != DeckType.All)
            {
                if (deck.IsArenaDeck && Config.Instance.SelectedDeckPickerDeckType != DeckType.Arena)
                {
                    SelectDeckType(DeckType.Arena);
                }
                else if (!deck.IsArenaDeck)
                {
                    if (deck.StandardViable && Config.Instance.SelectedDeckPickerDeckType != DeckType.Standard)
                    {
                        SelectDeckType(DeckType.Standard);
                    }
                    else if (!deck.StandardViable && Config.Instance.SelectedDeckPickerDeckType != DeckType.Wild)
                    {
                        SelectDeckType(DeckType.Wild);
                    }
                }
            }
            if (deck.Archived && !SelectedClasses.Contains(HeroClassAll.Archived))
            {
                SelectClass(HeroClassAll.Archived);
            }
            else if (!SelectedClasses.Contains(HeroClassAll.All))
            {
                HeroClassAll deckClass;
                if (Enum.TryParse(deck.Class, out deckClass))
                {
                    if (!SelectedClasses.Contains(deckClass))
                    {
                        SelectClass(deckClass);
                    }
                }
            }

            if (!DeckMatchesSelectedTags(deck))
            {
                if (Config.Instance.TagOperation == TagFilerOperation.Or)
                {
                    var missingTags = deck.Tags.Where(tag => !Config.Instance.SelectedTags.Contains(tag)).ToList();
                    if (missingTags.Any())
                    {
                        Config.Instance.SelectedTags.AddRange(missingTags);
                        Log.Info("Added missing tags so the deck shows up: " + missingTags.Aggregate((c, n) => c + ", " + n));
                    }
                    else
                    {
                        Config.Instance.SelectedTags.Add("None");
                        Log.Info("Added missing tags so the deck shows up: None");
                    }
                }
                else
                {
                    Config.Instance.SelectedTags = new List <string> {
                        "All"
                    };
                    Log.Info("Set tags to ALL so the deck shows up");
                }
                Config.Save();
                Core.MainWindow.SortFilterDecksFlyout.SetSelectedTags(Config.Instance.SelectedTags);
            }

            UpdateDecks(false);
            SelectDeck(deck);
            var dpi = _displayedDecks.FirstOrDefault(x => Equals(x.Deck, deck));

            if (dpi != null)
            {
                ListViewDecks.ScrollIntoView(dpi);
            }
        }