using System; using System.Collections.Generic; using TheGameExtreme.model.card; using TheGameExtreme.model.rule; using TheGameExtreme.model.rule.beforeEndTurnRules; using TheGameExtreme.model.rule.endTurnRules; using TheGameExtreme.model.rule.playRules; namespace TheGameExtreme.model { public class GameMode { 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; } } }