You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.7 KiB

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<Rule> playRule = new List<Rule>();
private List<Rule> beforeEndTurnRule = new List<Rule>();
private List<Rule> endTurnRule = new List<Rule>();
private List<Rule> commonRule = new List<Rule>();
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<Card> orderedStack, bool bottomUp, List<Card> 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<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> 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<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> 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;
}
}
}