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 12 months ago
commit 752f00ee4c

@ -3,12 +3,20 @@ namespace Models.Events;
public class GameStartedEventArgs : EventArgs public class GameStartedEventArgs : EventArgs
{ {
public Player Player { get; } public Player CurrentPlayer { get; }
public Map Map { get; }
public GameStartedEventArgs(Player player, Map map) public GameStartedEventArgs(Player selectedPlayer)
{ {
Player = player; CurrentPlayer = selectedPlayer;
Map = map; }
}
public class GameEndedEventArgs : EventArgs
{
public Player CurrentPlayer { get; }
public GameEndedEventArgs(Player winner)
{
CurrentPlayer = winner;
} }
} }

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