Create() public static method

public static Create ( Dominion card ) : DominionCard
card Dominion
return DominionCard
Esempio n. 1
0
 private async System.Threading.Tasks.Task PopulateFromResources()
 {
     foreach (Dominion.Card card in Dominion.Cards.AllKingdomCards())
     {
         this.originalCards.Add(DominionCard.Create(card));
     }
 }
Esempio n. 2
0
        private async void CurrentCardsListView_Drop(object sender, DragEventArgs e)
        {
            if (!e.Data.GetView().AvailableFormats.Contains("text"))
            {
                return;
            }

            string cardNames = (string)await e.Data.GetView().GetTextAsync("text");

            Dominion.Strategy.Description.StrategyDescription strategy = this.appDataContext.currentStrategy.Value.ConvertToDominionStrategy();


            foreach (var cardName in cardNames.Split(','))
            {
                DominionCard card = DominionCard.Create(cardName);

                if (strategy.purchaseOrderDescription.descriptions.Length == 0)
                {
                    strategy = Dominion.Strategy.Description.StrategyDescription.GetDefaultStrategyDescription(card.dominionCard);
                }
                else
                {
                    strategy = strategy.AddCardToPurchaseOrder(card.dominionCard);
                }
            }

            this.appDataContext.currentStrategy.Value.PopulateFrom(strategy);
        }
Esempio n. 3
0
        private async System.Threading.Tasks.Task PopulateCommonFromResources(Dominion.GameConfig gameConfig)
        {
            this.originalCards.Clear();

            Dominion.CardGainAvailablility[] availabilities = gameConfig.GetCardAvailability(1, Dominion.CardAvailabilityType.AdditionalCardsAfterKingdom);

            foreach (var availability in availabilities)
            {
                this.originalCards.Add(DominionCard.Create(availability.card));
            }
        }
Esempio n. 4
0
        private async void CurrentCardsListView_Drop(object sender, DragEventArgs e)
        {
            if (!e.Data.GetView().AvailableFormats.Contains("text"))
            {
                return;
            }

            string cardNames = (string)await e.Data.GetView().GetTextAsync("text");

            Dominion.Card[] cards = cardNames.Split(',').Select(cardName => DominionCard.Create(cardName).dominionCard).ToArray();
            Dominion.Strategy.Description.StrategyDescription strategy = this.appDataContext.currentStrategy.Value.ConvertToDominionStrategy();
            strategy = strategy.AddCardsToPurchaseOrder(cards);
            this.appDataContext.currentStrategy.Value.PopulateFrom(strategy);
        }
Esempio n. 5
0
 private async System.Threading.Tasks.Task PopulateCommonFromResources()
 {
     Dominion.Card[] commonCards = new Dominion.Card[] {
         Dominion.Cards.Province,
         Dominion.Cards.Duchy,
         Dominion.Cards.Estate,
         Dominion.Cards.Gold,
         Dominion.Cards.Silver,
         Dominion.Cards.Copper,
     };
     foreach (Dominion.Card card in commonCards)
     {
         this.originalCards.Add(DominionCard.Create(card));
     }
 }
Esempio n. 6
0
        void AvailableCards_PropetyChanged(object sender, PropertyChangedEventArgs e)
        {
            var setCards = new HashSet <Dominion.Card>();

            foreach (var card in this.currentDeck.Cards)
            {
                setCards.Add(card.dominionCard);
            }

            foreach (var card in this.commonCards.Cards)
            {
                setCards.Add(card.dominionCard);
            }

            this.player1Strategy.ConvertToDominionStrategy().GetAllCardsInStrategy(setCards);
            this.player2Strategy.ConvertToDominionStrategy().GetAllCardsInStrategy(setCards);

            var extraCards = new List <DominionCard>();

            foreach (var card in this.availableCards)
            {
                if (!setCards.Contains(card.dominionCard))
                {
                    extraCards.Add(card);
                }
            }

            foreach (var card in setCards)
            {
                var dominionCard = DominionCard.Create(card);
                if (!this.availableCards.Contains(dominionCard))
                {
                    this.availableCards.Add(dominionCard);
                }
            }

            foreach (var card in extraCards)
            {
                this.availableCards.Remove(card);
            }

            // this sort method will order but cause items in strategy to be data bound empty
            //Sort(this.availableCards, c => c.dominionCard.name);
        }
Esempio n. 7
0
        public static CardAcceptanceDescription PopulateFrom(Dominion.Strategy.Description.CardAcceptanceDescription descr)
        {
            var result = new CardAcceptanceDescription();

            result.Card.Value = DominionCard.Create(descr.card);

            if (descr.matchDescriptions.Length != 1 && descr.matchDescriptions.Length != 2)
            {
                throw new Exception("Support only one match description in addition to count all owned");
            }

            if (descr.matchDescriptions[0].countSource == Dominion.Strategy.Description.CountSource.Always)
            {
                result.Count.Value = CountAsManyAsPossible;
            }
            else if (descr.matchDescriptions[0].countSource == Dominion.Strategy.Description.CountSource.CountAllOwned &&
                     descr.matchDescriptions[0].cardType == descr.card &&
                     descr.matchDescriptions[0].comparison == Dominion.Strategy.Description.Comparison.LessThan)
            {
                result.Count.Value = descr.matchDescriptions[0].countThreshHold;
            }
            else
            {
                throw new Exception("First match description needs to describe how many of the card to own");
            }

            if (descr.matchDescriptions.Length == 2)
            {
                result.TestCard.Value = descr.matchDescriptions[1].cardType != null?DominionCard.Create(descr.matchDescriptions[1].cardType) : null;

                result.Threshhold.Value  = descr.matchDescriptions[1].countThreshHold;
                result.Comparison.Value  = descr.matchDescriptions[1].comparison;
                result.CountSource.Value = descr.matchDescriptions[1].countSource;
            }
            else
            {
                result.CountSource.Value = Dominion.Strategy.Description.CountSource.Always;
            }

            return(result);
        }
        private void ReRollEvents()
        {
            int cEventsToInclude = 0;

            int cEventRemaining   = 20;
            int totalKingdomCount = Dominion.Cards.AllKingdomCards().Count();

            for (int i = 0; i < 10; ++i)
            {
                int roll = MainPage.random.Next(totalKingdomCount);
                if (roll <= cEventRemaining)
                {
                    cEventsToInclude++;
                    cEventRemaining--;
                    i--;
                    continue;
                }
                totalKingdomCount--;
            }

            var allEventsCards = Dominion.Cards.AllCards().Where(c => c.isEvent).Select(c => DominionCard.Create(c)).ToArray();
            var selectedItems  = this.EventCardsListView.SelectedItems.Select(item => (DominionCard)item).ToArray <DominionCard>();

            var          cardPicker = new UniqueCardPicker(allEventsCards.Select(c => c.dominionCard));
            DominionCard baneCard   = null;

            this.appDataContext.EventCards.Clear();
            this.appDataContext.EventCards.GenerateRandom(cEventsToInclude, ref baneCard, allEventsCards, itemsToReplace: selectedItems);
        }
Esempio n. 9
0
        internal static bool GenerateRandom(
            int targetCount,
            ref DominionCard baneCard,
            IList <DominionCard> resultList,
            IList <DominionCard> sourceList,
            IEnumerable <DominionCard> allCards,
            IEnumerable <DominionCard> itemsToReplace)
        {
            bool isReplacingItems = itemsToReplace != null && itemsToReplace.Any() && sourceList.Count <= targetCount;
            bool isReducingItems  = itemsToReplace != null && itemsToReplace.Any() && sourceList.Count > targetCount;
            var  cardPicker       = new UniqueCardPicker(allCards.Select(c => c.dominionCard));

            bool isCleanRoll = false;

            if (isReplacingItems)
            {
                cardPicker.ExcludeCards(itemsToReplace.Select(c => c.dominionCard));
            }

            baneCard = DominionCard.Create(cardPicker.GetCard(c => c.DefaultCoinCost == 2 || c.DefaultCoinCost == 3));

            if (isReplacingItems)
            {
                foreach (DominionCard cardToReplace in itemsToReplace)
                {
                    for (int i = 0; i < resultList.Count; ++i)
                    {
                        if (resultList[i] == cardToReplace)
                        {
                            var nextCard = cardPicker.GetCard(c => true);
                            if (nextCard == null)
                            {
                                resultList.Remove(cardToReplace);
                                i--;  // do this index again
                            }
                            else
                            {
                                resultList[i] = DominionCard.Create(nextCard);
                            }
                        }
                    }
                }
            }
            else if (sourceList.Count < targetCount && sourceList.Count > 0)
            {
                var listRemoved = new List <DominionCard>();
                foreach (var card in resultList)
                {
                    if (!sourceList.Contains(card))
                    {
                        listRemoved.Add(card);
                    }
                }

                foreach (var card in listRemoved)
                {
                    resultList.Remove(card);
                }
            }
            else if (isReducingItems)
            {
                foreach (var card in itemsToReplace)
                {
                    resultList.Remove(card);
                }
            }
            else
            {
                resultList.Clear();
                isCleanRoll = true;
            }

            while (resultList.Count < targetCount)
            {
                Dominion.Card currentCard = cardPicker.GetCard(c => true);
                if (currentCard == null)
                {
                    break;
                }
                resultList.Add(DominionCard.Create(currentCard));
            }

            return(isCleanRoll);
        }
Esempio n. 10
0
 private async System.Threading.Tasks.Task PopulatColonyPlatinumFromResources()
 {
     this.originalCards.Add(DominionCard.Create(Dominion.Cards.Platinum));
     this.originalCards.Add(DominionCard.Create(Dominion.Cards.Colony));
 }