diff --git a/source/Trek-12/Models/Events/GameStartedEventArgs.cs b/source/Trek-12/Models/Events/GameStartedEventArgs.cs index 45cf88b..4006df9 100644 --- a/source/Trek-12/Models/Events/GameStartedEventArgs.cs +++ b/source/Trek-12/Models/Events/GameStartedEventArgs.cs @@ -3,12 +3,20 @@ namespace Models.Events; public class GameStartedEventArgs : EventArgs { - public Player Player { get; } - public Map Map { get; } + public Player CurrentPlayer { get; } - public GameStartedEventArgs(Player player, Map map) + public GameStartedEventArgs(Player selectedPlayer) { - Player = player; - Map = map; + CurrentPlayer = selectedPlayer; + } +} + +public class GameEndedEventArgs : EventArgs +{ + public Player CurrentPlayer { get; } + + public GameEndedEventArgs(Player winner) + { + CurrentPlayer = winner; } } \ No newline at end of file diff --git a/source/Trek-12/Models/Game/Game.cs b/source/Trek-12/Models/Game/Game.cs index b154e77..39d242f 100644 --- a/source/Trek-12/Models/Game/Game.cs +++ b/source/Trek-12/Models/Game/Game.cs @@ -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 GameStarted; + public event EventHandler 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 + } + } } }