using System; using System.Collections.Generic; using OrderStacks.model.card; using OrderStacks.model.deck; using OrderStacks.model.gameActions.abstractRules; using OrderStacks.model.piles; namespace OrderStacks.model.gameActions.classic { public class GameModeClassic : GameMode { /** * Deck de carte * Piles du jeu * * Constructeur */ public GameModeClassic(Piles piles, Deck deck) : base(piles, deck) { } /** * Nombre de joueur * Pseudo du/des joueur(s) * * Fonction permettant de charger les paramètres de jeu */ override public void load(int nbPlayer, List players) { gameActions.Add(new PiocherClassic(Piles)); gameActions.Add(new JouerUneCarteClassic(Piles)); gameActions.Add(new TerminerSonTourClassic(Piles)); defineNbMaxCard(nbPlayer); distribueCard(players); } /** * Liste de carte du joueur actif * Joueur actif * * Fonction permettant au joueur actif de piocher une carte */ override public void pioche(List currentHand, Player player) { Message = ""; ((PiocherClassic)gameActions[0]).pioche(currentHand, deck, player, nbMaxCard); quickSort(currentHand, 0, currentHand.Count - 1); } /** * Joueur actif * Liste de carte du joeuur actif * Liste des cartes jouées durant le tour du joueur actif * Pile séléctionnée * Valeur de la carte en train d'être joué * * Fonction permettant de tenter de jouer une carte * * Booléen de carte joué */ override public bool playCard(decimal valueCard, List currentHand, int orderedStackSelected, Player player, List CurrentCardPlayed) { Message = ""; if (((JouerUneCarteClassic)gameActions[1]).play(valueCard, currentHand, orderedStackSelected, player, CurrentCardPlayed)) { return true; } else { if (!end) { Message = ((JouerUneCarteClassic)gameActions[1]).ErrorMessage; } return false; } } /** * Liste de carte du joueur actif * Liste des cartes jouées durant le tour du joueur actif * Joueur actif * * Fonction permettant de lancer la fin du tour et de vérifier la fin du jeu * * Booléen de fin de jeu */ override public bool endTurn(List currentHand, List CurrentCardPlayed, Player player) { Message = ""; if (((TerminerSonTourClassic)gameActions[2]).end(currentHand, CurrentCardPlayed)) { pioche(currentHand, player); CurrentCardPlayed.Clear(); OnPlayerChanged(null); return end; } else { Message = ((TerminerSonTourClassic)gameActions[2]).ErrorMessage; return false; } } /** * Liste de carte du joueur actif * * Fonction permettant de vérifier si c'est la fin du jeu */ override public void TestEndGame(List currentHand) { if (((TerminerSonTourClassic)gameActions[2]).Test(currentHand)) { end = false; } else { OnEndGame(new EventArgs()); end = true; } } } }