Création de la boucle de jeu et correction des événements
continuous-integration/drone/push Build is failing Details
continuous-integration/drone/pr Build is failing Details

pull/61/head
Rémi LAVERGNE 11 months ago
parent c267232a53
commit de58794309
No known key found for this signature in database
GPG Key ID: CA264B55E97FD220

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

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

@ -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<GameStartedEventArgs> OnGameStarted;
protected virtual void GameStarted(GameStartedEventArgs e)
{
OnGameStarted?.Invoke(this, e);
}
public event EventHandler<GameEndedEventArgs> OnGameEnded;
protected virtual void GameStarted(GameEndedEventArgs e)
{
OnGameEnded?.Invoke(this, e);
}
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();
@ -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
}
}
}
}

Loading…
Cancel
Save