diff --git a/source/Trek-12/Models/Events/GameEndedEventArgs.cs b/source/Trek-12/Models/Events/GameEndedEventArgs.cs deleted file mode 100644 index e0bcb97..0000000 --- a/source/Trek-12/Models/Events/GameEndedEventArgs.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Models.Game; -namespace Models.Events; - -public class GameEndedEventArgs -{ - public Player Player { get; } - public Map Map { get; } - - public GameEndedEventArgs(Player player, Map map) - { - Player = player; - Map = map; - } -} \ No newline at end of file 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 813b5d1..39d242f 100644 --- a/source/Trek-12/Models/Game/Game.cs +++ b/source/Trek-12/Models/Game/Game.cs @@ -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 OnGameStarted; - protected virtual void GameStarted(GameStartedEventArgs e) - { - OnGameStarted?.Invoke(this, e); - } - - public event EventHandler OnGameEnded; - protected virtual void GameStarted(GameEndedEventArgs e) - { - OnGameEnded?.Invoke(this, e); - } + public event EventHandler GameStarted; + public event EventHandler 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 + } + } } }