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); } }
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); } }