|
|
|
@ -11,6 +11,7 @@ namespace Models.Game
|
|
|
|
|
{
|
|
|
|
|
public class Game
|
|
|
|
|
{
|
|
|
|
|
private bool _isRunning;
|
|
|
|
|
public Player CurrentPlayer { get; private set; }
|
|
|
|
|
|
|
|
|
|
public Map UsedMap { get; private set; }
|
|
|
|
@ -23,21 +24,13 @@ namespace Models.Game
|
|
|
|
|
private Rules.Rules GameRules { get; }
|
|
|
|
|
|
|
|
|
|
// == Events ==
|
|
|
|
|
public event EventHandler<GameStartedEventArgs> OnGameStarted;
|
|
|
|
|
protected virtual void GameStarted(GameStartedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OnGameStarted?.Invoke(this, e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public event EventHandler<GameEndedEventArgs> OnGameEnded;
|
|
|
|
|
protected virtual void GameStarted(GameEndedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OnGameEnded?.Invoke(this, e);
|
|
|
|
|
}
|
|
|
|
|
public event EventHandler<GameStartedEventArgs> GameStarted;
|
|
|
|
|
public event EventHandler<GameEndedEventArgs> GameEnded;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Game(Player player, Map map)
|
|
|
|
|
{
|
|
|
|
|
_isRunning = false;
|
|
|
|
|
UsedMap = map;
|
|
|
|
|
CurrentPlayer = player;
|
|
|
|
|
Dice1 = new Dice();
|
|
|
|
@ -89,6 +82,29 @@ namespace Models.Game
|
|
|
|
|
if (GameRules.IsRopePath(cell, ropePaths)) return;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void InitializeGame()
|
|
|
|
|
{
|
|
|
|
|
_isRunning = true;
|
|
|
|
|
GameStarted?.Invoke(this, new GameStartedEventArgs(CurrentPlayer));
|
|
|
|
|
|
|
|
|
|
GameLoop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async void GameLoop()
|
|
|
|
|
{
|
|
|
|
|
while (_isRunning)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (CheckGameEnd()) //TODO Règle pour check si fin de jeu
|
|
|
|
|
{
|
|
|
|
|
_isRunning = false;
|
|
|
|
|
//TODO Code pour comptabiliser les points
|
|
|
|
|
GameEnded?.Invoke(this, new GameEndedEventArgs(//player));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await Task.Delay(1000); // 1 seconde
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|