private async Task <Deck> CreateRandomDeck() { var diceRoll = new Random(); var faction = (Faction)diceRoll.Next(2, 8); var deck = new Deck(faction, AppVersion, DeckType.GENERATED_DECK) { Name = "RANDOM DECK", Description = "I wouldn't recommend actually playing as is. Edit this deck to save it, or share it as a challenge!" }; var cards = (await _cardsService.GetAllCardsAsync()).Where((c) => c.ValidFactions.Contains(faction) && c.Rarity != Rarity.TOKEN).ToList(); cards.Shuffle(); deck.Champion = cards.FirstOrDefault((c) => c.Type == CardType.CHAMPION); while (!deck.IsValid) { try { cards.Shuffle(); if (cards[0].Type != CardType.CHAMPION && deck.CountCard(cards[0]) < Deck.MAX_CARD_COUNT) { deck.Add(cards[0]); } if (diceRoll.Next(0, 1) == 1) { deck.Add(cards[0]); } } catch (Exception) { break; } } return(deck); }
public async Task CheckForNewCardsAsync() { var cards = await _cardsService.GetAllCardsAsync(); _newCardsToShow = cards.Any(c => c.CardSet == CardSet.NEXT); if (_newCardsToShow) { NewCardsText = "New Cards!"; } else { NewCardsText = NEW_CARDS_DEFAULT_TEXT; } }
public async Task InitializeAsync(Deck deck = null, string searchText = null) { IsBusy = true; if (_firstLoad) {//Wait longer for the ui to load _firstLoad = false; await Task.Delay(1500); } else { await Task.Delay(500); } var freshCards = await _cardsService.GetAllCardsAsync(); if (_unfilteredCards != freshCards) { _unfilteredCards = freshCards; RaisePropertyChanged(nameof(EighthFactionEnabled)); AllCards = _unfilteredCards.ToList(); } _suspendFilters = searchText != null; if (deck == null || deck != CurrentDeck) { await DeckInitialize(deck); } if (searchText != null) { IsBusy = true; await Task.Delay(500); //let the ui settle _suspendFilters = false; if (CardSets.Contains(searchText)) { CardSetFilter = searchText; MessagingCenter.Send <string>($"Card Set: {searchText}", App.MESSAGES.SHOW_TOAST); } else { SearchText = searchText; } } IsBusy = false; }