Merge pull request 'Début boucle de jeu et évenements' (#61) from events into dev
continuous-integration/drone/push Build is failing Details

Reviewed-on: #61
pull/64/head
Lucas DUFLOT 11 months ago
commit 752f00ee4c

@ -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;
}
}

@ -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
}
}
}
}

Loading…
Cancel
Save