|
|
|
@ -3,7 +3,8 @@ using System.Collections.Generic;
|
|
|
|
|
using TheGameExtreme.model.card;
|
|
|
|
|
using TheGameExtreme.model.deck;
|
|
|
|
|
using TheGameExtreme.model.@event;
|
|
|
|
|
using TheGameExtreme.model.rule.endRule;
|
|
|
|
|
using TheGameExtreme.model.rule.beforeEndTurnRules;
|
|
|
|
|
using TheGameExtreme.model.rule.endTurnRules;
|
|
|
|
|
using TheGameExtreme.model.rule.playRules;
|
|
|
|
|
|
|
|
|
|
namespace TheGameExtreme.model.manager
|
|
|
|
@ -38,6 +39,20 @@ namespace TheGameExtreme.model.manager
|
|
|
|
|
players.ForEach(player => playerList.Add(new Player(player)));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
initStacks();
|
|
|
|
|
|
|
|
|
|
initRule();
|
|
|
|
|
|
|
|
|
|
createDeck();
|
|
|
|
|
defineNbMaxCard();
|
|
|
|
|
distribueCard();
|
|
|
|
|
|
|
|
|
|
CurrentHand = playerList[currentIndexPlayer].getCardList();
|
|
|
|
|
nbCardAtBeginOfTurn = CurrentHand.Count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void initStacks()
|
|
|
|
|
{
|
|
|
|
|
ListOrderedStacks.Add(new Stack<Card>());
|
|
|
|
|
ListOrderedStacks.Add(new Stack<Card>());
|
|
|
|
|
ListOrderedStacks.Add(new Stack<Card>());
|
|
|
|
@ -54,21 +69,19 @@ namespace TheGameExtreme.model.manager
|
|
|
|
|
ListOrderedStacks[i].Push(new ClassicCard(100));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void initRule()
|
|
|
|
|
{
|
|
|
|
|
gameMode = new GameMode();
|
|
|
|
|
gameMode.addPlayRule(new Ascendant());
|
|
|
|
|
gameMode.addPlayRule(new Descendant());
|
|
|
|
|
gameMode.addPlayRule(new PasDeDix());
|
|
|
|
|
//gameMode.addPlayRule(new VoidHand());
|
|
|
|
|
gameMode.addBeforeEndTurnRule(new NbCardPlay());
|
|
|
|
|
gameMode.addEndTurnRule(new EndGame(ListOrderedStacks));
|
|
|
|
|
gameMode.addEndTurnRule(new VoidDeck());
|
|
|
|
|
gameMode.addEndTurnRule(new VoidHand());
|
|
|
|
|
|
|
|
|
|
createDeck();
|
|
|
|
|
defineNbMaxCard();
|
|
|
|
|
distribueCard();
|
|
|
|
|
|
|
|
|
|
CurrentHand = playerList[currentIndexPlayer].getCardList();
|
|
|
|
|
nbCardAtBeginOfTurn = CurrentHand.Count;
|
|
|
|
|
//gameMode.addEndTurnRule(new VoidDeck());
|
|
|
|
|
//gameMode.addEndTurnRule(new CompleteHand());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void createDeck()
|
|
|
|
@ -146,17 +159,17 @@ namespace TheGameExtreme.model.manager
|
|
|
|
|
|
|
|
|
|
protected void testPossibility(Card card, Stack<Card> orderedStack, bool bottomUp)
|
|
|
|
|
{
|
|
|
|
|
if (gameMode.checkPlayRule(card, orderedStack, bottomUp))
|
|
|
|
|
if (gameMode.checkPlayRule(card, orderedStack, bottomUp, CurrentHand))
|
|
|
|
|
{
|
|
|
|
|
Card oldCard = orderedStack.Peek();
|
|
|
|
|
playerList[currentIndexPlayer].joue(card);
|
|
|
|
|
CurrentCardPlayed.Add(card);
|
|
|
|
|
orderedStack.Push(card);
|
|
|
|
|
OnTopRangeChanged(new TopRangeChangedEventArgs(card, oldCard, ListOrderedStacks.IndexOf(orderedStack)));
|
|
|
|
|
if (CurrentHand.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
endTurn(); // Presque bon, oublie juste d'afficher les nouvelles cartes
|
|
|
|
|
}
|
|
|
|
|
//if (CurrentHand.Count == 0)
|
|
|
|
|
//{
|
|
|
|
|
// endTurn(); // Presque bon, oublie juste d'afficher les nouvelles cartes
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|