|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Dynamic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
@ -10,6 +11,7 @@ namespace Models.Game
|
|
|
|
|
{
|
|
|
|
|
public class Game
|
|
|
|
|
{
|
|
|
|
|
private bool _isRunning;
|
|
|
|
|
public Player CurrentPlayer { get; private set; }
|
|
|
|
|
|
|
|
|
|
public Map UsedMap { get; private set; }
|
|
|
|
@ -22,11 +24,13 @@ namespace Models.Game
|
|
|
|
|
private Rules.Rules GameRules { get; }
|
|
|
|
|
|
|
|
|
|
// == Events ==
|
|
|
|
|
public event GameStartedEventArgs OnGameStarted;
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
@ -78,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
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|