private void GetCardsByQueryString(Parameters parameters, List <CardWrapper> lstCards) { bool blnDone = false; string strQueryString = parameters.QueryString.ToLowerInvariant(); for (int i = 0; i < parameters.Rarities.Count && !blnDone; i++) { List <CardWrapper> lstChunk = GetCardsForRarity(parameters.Rarities[i], parameters); lstChunk = FilterForClasses(lstChunk, parameters.Classes); lstChunk = FilterForSets(lstChunk, parameters.Sets); for (int j = 0; j < lstChunk.Count; j++) { CardWrapper cardWrapper = lstChunk[j]; if (IsCardMatch(cardWrapper, strQueryString)) { lstCards.Add(cardWrapper); } else { } } } }
private async Task CheckForUnusedCardsAsync(List <Card> lstCollection) { if (lstCollection == null) { throw new ArgumentNullException("lstCollection"); } else { } m_lstUnusedCards.Clear(); List <Deck> lstDecks = m_account.GetDecks(); if (lstDecks.Count > 0 && lstDecks[0].Cards.Count > 0) { for (int i = 0; i < lstCollection.Count; i++) { Card card = lstCollection[i]; CardWrapper cardWrapper = new CardWrapper(card); for (int j = 0; j < lstDecks.Count; j++) { if (!m_account.IsDeckExcluded(lstDecks[j].Id) && lstDecks[j].ContainsCard(card.Id)) { Card cardInDeck = lstDecks[j].GetCard(card.Id); if (cardInDeck.Count > cardWrapper.MaxCountInDecks) { cardWrapper.MaxCountInDecks = cardInDeck.Count; } else { } } else { } } if (cardWrapper.MaxCountInDecks < 2 && cardWrapper.Card.Count > cardWrapper.MaxCountInDecks && !(cardWrapper.DbCard.Rarity == Rarity.LEGENDARY && cardWrapper.MaxCountInDecks == 1)) { m_lstUnusedCards.Add(cardWrapper); } else { } } } else if (!DustUtilityPlugin.IsOffline) { await m_mainWindow.ShowMessageAsync("No decks available", "Navigate to the \"Play\" page first!"); //MessageBox.Show("Navigate to the \"Play\" page first!", "Dust Utility", MessageBoxButton.OK, MessageBoxImage.Error); } else { } }
private void RemoveRedundantCards(List <CardWrapper> lstCards, Parameters parameters, int nDustAmount, int nTotalAmount) { if (lstCards.Count > 0 && parameters.Rarities.Count > 0) { int nDifference = nTotalAmount - nDustAmount; if (nDifference > 0) { bool blnDone = false; int nCurrentAmount = 0; for (int i = 0; i < parameters.Rarities.Count && !blnDone; i++) { List <CardWrapper> lstChunk = lstCards.FindAll(c => c.DbCard.Rarity == parameters.Rarities[i]); for (int j = 0; j < lstChunk.Count && !blnDone; j++) { CardWrapper cardWrapper = lstChunk[j]; nCurrentAmount += cardWrapper.GetDustValue(); int nCurrentDifference = nDifference - nCurrentAmount; blnDone = nCurrentDifference == 0; if (!blnDone) { if (nCurrentDifference < 0) { blnDone = true; } else { lstCards.Remove(cardWrapper); } } else { lstCards.Remove(cardWrapper); } } } } else { } } else { } }
private void GetCardsForDustAmount(Parameters parameters, List <CardWrapper> lstCards) { int nDustAmount = 0; try { nDustAmount = Convert.ToInt32(parameters.QueryString); } catch { //Invalid value nDustAmount = Int32.MaxValue; } int nTotalAmount = 0; bool blnDone = false; for (int i = 0; i < parameters.Rarities.Count && !blnDone; i++) { List <CardWrapper> lstChunk = GetCardsForRarity(parameters.Rarities[i], parameters); lstChunk = FilterForClasses(lstChunk, parameters.Classes); lstChunk = FilterForSets(lstChunk, parameters.Sets); lstChunk = new List <CardWrapper>(lstChunk.OrderBy(c => c.GetDustValue())); for (int j = 0; j < lstChunk.Count && !blnDone; j++) { CardWrapper cardWrapper = lstChunk[j]; nTotalAmount += cardWrapper.GetDustValue(); lstCards.Add(cardWrapper); blnDone = nTotalAmount >= nDustAmount; } } //Post processing //Remove low rarity cards if the total amount is over the targeted amount if (nTotalAmount > nDustAmount) { RemoveRedundantCards(lstCards, parameters, nDustAmount, nTotalAmount); } else { } }
private bool IsCardMatch(CardWrapper cardWrapper, string strKeyString) { bool blnRet = false; blnRet |= cardWrapper.DbCard.Name.ToLowerInvariant().Contains(strKeyString); blnRet |= cardWrapper.DbCard.Race.ToString().Equals(strKeyString.ToUpperInvariant()); blnRet |= cardWrapper.DbCard.Mechanics.Any(s => s.ToLowerInvariant().Equals(strKeyString)); blnRet |= CardSets.AllFullName[cardWrapper.DbCard.Set].ToLowerInvariant().Contains(strKeyString); blnRet |= cardWrapper.DbCard.Type.ToString().ToLowerInvariant().Equals(strKeyString) || (strKeyString.Equals("spell") && cardWrapper.DbCard.Type.ToString().ToLowerInvariant().Equals("ability")); return(blnRet); }