public IEnumerable<CardModel> ChooseOrder(CardOrderType choiceType, string choiceText, IEnumerable<CardModel> choices) { if (choices.GroupBy(new Func<CardModel, string>(c => c.Name)).Count() <= 1) { return choices; } else { return Order(choiceType, choiceText, choices); } }
public abstract IEnumerable<CardModel> Order(CardOrderType choiceType, string choiceText, IEnumerable<CardModel> choices);
public override IEnumerable<CardModel> Order(CardOrderType choiceType, string choiceText, IEnumerable<CardModel> choices) { return choices; }
public override IEnumerable<CardModel> Order(CardOrderType choiceType, string choiceText, IEnumerable<CardModel> choices) { return choices.OrderBy(c => Randomizer.Next()); }
public override IEnumerable<CardModel> Order(CardOrderType choiceType, string choiceText, IEnumerable<CardModel> choices) { IEnumerable<string> chosen = this.MakeCardPileChoice(choiceText, from c in choices select c.ID, choices.Count(), choices.Count(), ChoiceSource.None, card:true, order: true); 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; }