using System; using System.Collections.Generic; using TheGameExtreme.model.card; using TheGameExtreme.model.card.rapidCard; namespace TheGameExtreme.model.rule.endTurnRules { public class EndGame : EndTurnRule { public static readonly String REGLE_ENDGAME = "End Game"; public List> ListOrderedStacks { get; set; } public EndGame(List> ListOrderedStacks) { this.ListOrderedStacks = ListOrderedStacks; } public override bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) { if (CurrentHand.Count != 0) { List playableCard = new List(); tryToFindSoluce(playableCard, CurrentHand); return testEndGame(playableCard); } return false; } protected void tryToFindSoluce(List playableCard, List CurrentHand) { CurrentHand.ForEach(card => { if (card.Value > ListOrderedStacks[0].Peek().Value || card.Value > ListOrderedStacks[1].Peek().Value || card.Value < ListOrderedStacks[2].Peek().Value || card.Value < ListOrderedStacks[3].Peek().Value) { playableCard.Add(card); } }); } protected bool testEndGame(List playableCard) { if (playableCard.Count == 2) { foreach (Card c in playableCard) { if (Equals(c.getName(), ThreeCard.CARD_THREE)) { return false; } } } else if (playableCard.Count < 2) { return false; } return true; } } }