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(); } }
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(); } }
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); } }
public abstract IEnumerable<Pile> ChoosePiles(CardChoiceType choiceType, string choiceText, int minChoices, int maxChoices, IEnumerable<Pile> choices);
public CardModel ChooseOneCard(CardChoiceType choiceType, string choiceText, ChoiceSource source, IEnumerable<CardModel> choices) { return ChooseOneCard(choiceType, null, choiceText, source, choices); }
public Pile ChooseZeroOrOnePile(CardChoiceType choiceType, string choiceText, IEnumerable<Pile> choices) { return this.ChooseSeveralPiles(choiceType, choiceText, 0, 1, choices).FirstOrDefault(); }
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; }
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); } }
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); }
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); }
public override IEnumerable<Pile> ChoosePiles(CardChoiceType choiceType, string choiceText, int minChoices, int maxChoices, IEnumerable<Pile> choices) { return choices.Take(minChoices); }
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; }
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); }
public abstract IEnumerable<CardModel> ChooseCards(CardChoiceType choiceType, CardModel cardInfo, string choiceText, ChoiceSource source, int minChoices, int maxChoices, IEnumerable<CardModel> choices);
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); }