Exemple #1
0
 public Pile ChooseOnePile(CardChoiceType choiceType, string choiceText, IEnumerable<Pile> choices)
 {
     if (choices.Count() <= 1)
     {
         return choices.FirstOrDefault();
     }
     else
     {
         return this.ChoosePiles(choiceType, choiceText, 1, 1, choices).First();
     }
 }
Exemple #2
0
 public CardModel ChooseOneCard(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, IEnumerable<CardModel> choices)
 {
     if (choices.GroupBy(new Func<CardModel, string>(c => c.Name)).Count() <= 1)
     {
         return choices.FirstOrDefault();
     }
     else
     {
         return this.ChooseCards(choiceType, cardInfo, choiceText, source, 1, 1, choices).FirstOrDefault();
     }
 }
Exemple #3
0
 public IEnumerable<CardModel> ChooseSeveralCards(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, int minChoices, int maxChoices, IEnumerable<CardModel> choices)
 {
     if(choices.Count() <= minChoices)
     {
         return choices;
     }
     else if (minChoices == maxChoices && choices.GroupBy(new Func<CardModel, string>(c => c.Name)).Count() <= 1)
     {
         return choices.Take(minChoices);
     }
     else
     {
         return this.ChooseCards(choiceType, cardInfo, choiceText, source, minChoices, maxChoices, choices);
     }
 }
Exemple #4
0
 public abstract IEnumerable<Pile> ChoosePiles(CardChoiceType choiceType, string choiceText, int minChoices, int maxChoices, IEnumerable<Pile> choices);
Exemple #5
0
 public CardModel ChooseOneCard(CardChoiceType choiceType, string choiceText, ChoiceSource source, IEnumerable<CardModel> choices)
 {
     return ChooseOneCard(choiceType, null, choiceText, source, choices);
 }
Exemple #6
0
 public Pile ChooseZeroOrOnePile(CardChoiceType choiceType, string choiceText, IEnumerable<Pile> choices)
 {
     return this.ChooseSeveralPiles(choiceType, choiceText, 0, 1, choices).FirstOrDefault();
 }
Exemple #7
0
 public CardModel ChooseZeroOrOneCard(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, IEnumerable<CardModel> choices)
 {
     return this.ChooseSeveralCards(choiceType, choiceText, source, 0, 1, choices).FirstOrDefault();
 }
 public override IEnumerable<CardModel> ChooseCards(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, int minChoices, int maxChoices, IEnumerable<CardModel> choices)
 {
     IEnumerable<string> chosen = this.MakeCardPileChoice(choiceText, (from c in choices select c.ID), minChoices, maxChoices, source, card: true, order: false);
     List<CardModel> chosenCards = new List<CardModel>();
     Dictionary<string, int> seen = new Dictionary<string, int>();
     foreach (string c in chosen)
     {
         int skip = 0;
         seen.TryGetValue(c, out skip);
         CardModel foundCard = null;
         int counter = skip;
         foreach (CardModel card in choices)
         {
             if (c == card.ID)
             {
                 if (counter > 0)
                 {
                     counter--;
                 }
                 else
                 {
                     foundCard = card;
                     break;
                 }
             }
         }
         seen[c] = skip + 1;
         chosenCards.Add(foundCard);
     }
     return chosenCards;
 }
Exemple #9
0
 public IEnumerable<Pile> ChooseSeveralPiles(CardChoiceType choiceType, string choiceText, int minChoices, int maxChoices, IEnumerable<Pile> choices)
 {
     if (choices.Count() <= minChoices)
     {
         return choices;
     }
     else
     {
         return this.ChoosePiles(choiceType, choiceText, minChoices, maxChoices, choices);
     }
 }
Exemple #10
0
 public override IEnumerable<Pile> ChoosePiles(CardChoiceType choiceType, string choiceText, int minChoices, int maxChoices, IEnumerable<Pile> choices)
 {
     maxChoices = Math.Min(maxChoices, choices.Count());
     int howMany = Randomizer.Next(minChoices, maxChoices + 1);
     return choices.OrderBy(c => Randomizer.Next()).Take(howMany);
 }
Exemple #11
0
 public override IEnumerable<CardModel> ChooseCards(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, int minChoices, int maxChoices, IEnumerable<CardModel> choices)
 {
     maxChoices = Math.Min(maxChoices, choices.Count());
     int howMany = Randomizer.Next(minChoices, maxChoices + 1);
     return choices.OrderBy(c => Randomizer.Next()).Take(howMany);
 }
Exemple #12
0
 public override IEnumerable<Pile> ChoosePiles(CardChoiceType choiceType, string choiceText, int minChoices, int maxChoices, IEnumerable<Pile> choices)
 {
     return choices.Take(minChoices);
 }
Exemple #13
0
 public override IEnumerable<CardModel> ChooseCards(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, int minChoices, int maxChoices, IEnumerable<CardModel> choices)
 {
     return choices.Take(minChoices);
 }
 public override IEnumerable<Pile> ChoosePiles(CardChoiceType choiceType, string choiceText, int minChoices, int maxChoices, IEnumerable<Pile> choices)
 {
     IEnumerable<string> chosen = this.MakeCardPileChoice(choiceText, (from c in choices select c.Card.ID), minChoices, maxChoices, ChoiceSource.FromPile, card:false, order: false);
     List<Pile> chosenPiles = new List<Pile>();
     Dictionary<string, int> seen = new Dictionary<string, int>();
     foreach (string c in chosen)
     {
         int skip = 0;
         seen.TryGetValue(c, out skip);
         Pile foundPile = null;
         int counter = skip;
         foreach (Pile pile in choices)
         {
             if (c == pile.Card.ID)
             {
                 if (counter > 0)
                 {
                     counter--;
                 }
                 else
                 {
                     foundPile = pile;
                     break;
                 }
             }
         }
         seen[c] = skip + 1;
         chosenPiles.Add(foundPile);
     }
     return chosenPiles;
 }
Exemple #15
0
 public IEnumerable<CardModel> ChooseSeveralCards(CardChoiceType choiceType, string choiceText, ChoiceSource source, int minChoices, int maxChoices, IEnumerable<CardModel> choices)
 {
     return ChooseSeveralCards(choiceType, null, choiceText, source, minChoices, maxChoices, choices);
 }
Exemple #16
0
 public abstract IEnumerable<CardModel> ChooseCards(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, int minChoices, int maxChoices, IEnumerable<CardModel> choices);
Exemple #17
0
 public override IEnumerable<CardModel> ChooseCards(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, int minChoices, int maxChoices, IEnumerable<CardModel> choices)
 {
     switch(choiceType)
     {
         case CardChoiceType.Discard:
             List<CardModel> choiceList = new List<CardModel>(choices);
             List<CardModel> discardList = new List<CardModel>();
             return choiceList.OrderBy(choice => this.parent.StaticEvalSimple(choice, this.parent.GetGamePhase())).Take(minChoices);
     }
     return base.ChooseCards(choiceType, cardInfo, choiceText, source, minChoices, maxChoices, choices);
 }