using System; using System.Collections.Generic; using TheGameExtreme.model.card; using TheGameExtreme.model.gameActions; namespace TheGameExtreme.model.gameActions.classic { public class GameMode { protected List gameActions; protected Piles piles; public GameMode() { gameActions = new List(); gameActions.Add(new Piocher(piles)); gameActions.Add(new JouerUneCarte(piles)); gameActions.Add(new TerminerSonTour(piles)); } public void load() { piles = new Piles(); } public void pioche() { ((Piocher)gameActions[0]).pioche(); } public void playCard(int valueCard, List CurrentHand, int orderedStackSelected, Player player, List CurrentCardPlayed) { ((JouerUneCarte)gameActions[1]).play(valueCard, CurrentHand, orderedStackSelected, player, CurrentCardPlayed); if (CurrentHand.Count == 0) { endTurn(); // Presque bon, oublie juste d'afficher les nouvelles cartes } } public void endTurn() { ((TerminerSonTour)gameActions[2]).end(); } // private List playRule = new List(); // private List beforeEndTurnRule = new List(); // private List endTurnRule = new List(); // private List commonRule = new List(); // public GameMode() // { // } // public void addPlayRule(PlayRule rule) // { // playRule?.Add(rule); // } // public void addEndTurnRule(EndTurnRule rule) // { // endTurnRule?.Add(rule); // } // public void addBeforeEndTurnRule(BeforeEndTurnRule rule) // { // beforeEndTurnRule?.Add(rule); // } // public void addCommonRule(Rule rule) // { // // Vérifier que se ne soit ni une PlayRule, ni une EndTurnRule ? // commonRule?.Add(rule); // } // public bool checkPlayRule(Card card, Stack orderedStack, bool bottomUp, List CurrentHand) // { // foreach(PlayRule rule in playRule) // { // if (rule.Test(card, orderedStack, bottomUp, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. // { // return true; // } // } // foreach (Rule rule in commonRule) // { // } // return false; // } // public bool checkBeforeEndTurnRule(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) // { // foreach (BeforeEndTurnRule rule in beforeEndTurnRule) // { // if (!rule.Test(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. // { // return false; // } // } // foreach (Rule rule in commonRule) // { // } // return true; // } // public bool checkEndTurnRule(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) // { // foreach (EndTurnRule rule in endTurnRule) // { // if (!rule.Test(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. // { // return false; // } // } // foreach (Rule rule in commonRule) // { // } // return true; // } } }