using System.Collections.Generic;
using OrderStacks.model.card;
using OrderStacks.model.piles;
namespace OrderStacks.model.gameActions.abstractRules
{
public abstract class TerminerSonTour : GameAction
{
/**
* Piles de jeu
*
* Constructeur
*/
protected TerminerSonTour(Piles ListOrderedStacks) : base(ListOrderedStacks)
{
}
/**
* Liste de carte du joeuur actif
* Liste des cartes jouées durant le tour du joueur actif
*
* Fonction permettant de terminer son tour
*
* Booléen indiquant si le changement de joueur peut se passer
*/
public abstract bool end(List CurrentHand, List CurrentCardPlayed);
/**
* Liste de carte du joueur actif
*
* Fonction permettant de gérer le test de fin du jeu
*
* Booléen de fin du jeu
*/
public bool Test(List CurrentHand)
{
if (CurrentHand.Count != 0)
{
List playableCard = new List();
tryToFindSoluce(playableCard, CurrentHand);
return testEndGame(playableCard);
}
return false;
}
/**
* Liste de carte du joueur actif
* Liste des cartes jouables
*
* Fonction permettant de chercher les cartes pouvants être jouées et les ajoutes à la liste des cartes jouables
*/
protected abstract void tryToFindSoluce(List playableCard, List CurrentHand);
/**
* Liste des cartes jouables
*
* Fonction vérifiant que les règles de fin de jeu ne sont pas arrivé
*/
protected abstract bool testEndGame(List playableCard);
}
}