@ -5,11 +5,10 @@ using TheGameExtreme.model.deck;
using TheGameExtreme.model.@event ;
using TheGameExtreme.model.@event ;
using TheGameExtreme.model.piles ;
using TheGameExtreme.model.piles ;
namespace TheGameExtreme.model.gameActions. classic
namespace TheGameExtreme.model.gameActions. abstractRules
{
{
public class GameMode
public abstract class GameMode
{
{
protected List < GameAction > gameActions ;
protected List < GameAction > gameActions ;
public Piles Piles { get ; protected set ; }
public Piles Piles { get ; protected set ; }
public int NbCardAtBeginOfTurn { get ; set ; }
public int NbCardAtBeginOfTurn { get ; set ; }
@ -35,22 +34,14 @@ namespace TheGameExtreme.model.gameActions.classic
# endregion
# endregion
p ublic GameMode ( Piles piles , Deck deck )
p rotected GameMode ( Piles piles , Deck deck )
{
{
gameActions = new List < GameAction > ( ) ;
gameActions = new List < GameAction > ( ) ;
Piles = piles ;
Piles = piles ;
this . deck = deck ;
this . deck = deck ;
}
}
public void load ( int nbPlayer , List < Player > players )
public abstract void load ( int nbPlayer , List < Player > players ) ;
{
gameActions . Add ( new Piocher ( Piles ) ) ;
gameActions . Add ( new JouerUneCarte ( Piles ) ) ;
gameActions . Add ( new TerminerSonTour ( Piles ) ) ;
defineNbMaxCard ( nbPlayer ) ;
distribueCard ( players ) ;
}
protected void defineNbMaxCard ( int nbPlayer )
protected void defineNbMaxCard ( int nbPlayer )
{
{
@ -109,60 +100,17 @@ namespace TheGameExtreme.model.gameActions.classic
deck . removeAt ( r ) ;
deck . removeAt ( r ) ;
}
}
List < Card > cards = player . getCardList ( ) ;
List < Card > cards = player . getCardList ( ) ;
quickSort ( cards , 0 , cards . Count - 1 ) ;
quickSort ( cards , 0 , cards . Count - 1 ) ;
} ) ;
} ) ;
}
}
public void pioche ( List < Card > currentHand , Player player )
public abstract void pioche ( List < Card > currentHand , Player player ) ;
{
Message = null ;
( ( Piocher ) gameActions [ 0 ] ) . pioche ( currentHand , deck , player , nbMaxCard ) ;
quickSort ( currentHand , 0 , currentHand . Count - 1 ) ;
}
public bool playCard ( decimal valueCard , List < Card > currentHand , int orderedStackSelected , Player player , List < Card > CurrentCardPlayed )
public abstract bool playCard ( decimal valueCard , List < Card > currentHand , int orderedStackSelected , Player player , List < Card > CurrentCardPlayed ) ;
{
Message = null ;
if ( ( ( JouerUneCarte ) gameActions [ 1 ] ) . play ( valueCard , currentHand , orderedStackSelected , player , CurrentCardPlayed ) )
{
return true ;
}
else
{
Message = ( ( JouerUneCarte ) gameActions [ 1 ] ) . ErrorMessage ;
return false ;
}
}
public bool endTurn ( List < Card > currentHand , List < Card > CurrentCardPlayed , Player player )
public abstract bool endTurn ( List < Card > currentHand , List < Card > CurrentCardPlayed , Player player ) ;
{
Message = null ;
if ( ( ( TerminerSonTour ) gameActions [ 2 ] ) . end ( currentHand , CurrentCardPlayed ) )
{
pioche ( currentHand , player ) ;
CurrentCardPlayed . Clear ( ) ;
OnPlayerChanged ( null ) ;
return end ;
}
else
{
Message = ( ( TerminerSonTour ) gameActions [ 2 ] ) . ErrorMessage ;
return false ;
}
}
public void TestEndGame ( List < Card > currentHand )
public abstract void TestEndGame ( List < Card > currentHand ) ;
{
if ( ( ( TerminerSonTour ) gameActions [ 2 ] ) . Test ( currentHand ) )
{
end = false ;
}
else
{
OnEndGame ( new EventArgs ( ) ) ;
end = true ;
}
}
public string getScore ( )
public string getScore ( )
{
{