add event (just problem with first notification)
continuous-integration/drone/push Build is passing Details

test_old_branch
Jérémy Mouyon 12 months ago
parent 64c950a5b4
commit 740598a508

@ -0,0 +1,12 @@
namespace QwirkleClassLibrary
{
public class AddPlayerNotifiedEventArgs : EventArgs
{
public int numberBack { get; private set; }
public AddPlayerNotifiedEventArgs(int numberBack)
{
this.numberBack = numberBack;
}
}
}

@ -21,6 +21,11 @@ namespace QwirkleClassLibrary
public ReadOnlyCollection<Score> ScoreList => scores.AsReadOnly();
private readonly List<Score> scores = new();
public event EventHandler<AddPlayerNotifiedEventArgs> PlayerAddNotified;
protected virtual void OnPlayerNotified(AddPlayerNotifiedEventArgs args)
=> PlayerAddNotified?.Invoke(this, args);
public Game()
{
bag = new TileBag(3);
@ -31,11 +36,13 @@ namespace QwirkleClassLibrary
{
if (string.IsNullOrWhiteSpace(playerTag) == true || this.GameRunning == true)
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs(1));
return false;
}
if (players.Count >= 4)
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs(2));
return false;
}
@ -43,19 +50,22 @@ namespace QwirkleClassLibrary
{
if (p.NameTag == playerTag)
{
OnPlayerNotified(new AddPlayerNotifiedEventArgs(3));
return false;
}
}
players.Add(CreatePlayer(playerTag));
scores.Add(new Score(players[players.Count-1]));
OnPlayerNotified(new AddPlayerNotifiedEventArgs(0));
return true;
}
public Player CreatePlayer(string playerTag)
{
var player = new Player(playerTag);
return player;
}

@ -0,0 +1,33 @@
using QwirkleClassLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace QwirkleConsoleApp
{
class NotificationClass
{
public void NotificationMessagePlayer(object? sender, AddPlayerNotifiedEventArgs args)
{
int t = args.numberBack;
switch (t)
{
case 0:
Console.WriteLine("Player as correctly add");
break;
case 1:
Console.WriteLine("ERROR : The name is null or white space");
break;
case 2:
Console.WriteLine("ERROR : The game is full");
break;
case 3:
Console.WriteLine("ERROR : Name exist");
break;
}
}
}
}

@ -1,24 +1,26 @@
using QwirkleClassLibrary;
using QwirkleConsoleApp;
using System.Net.Quic;
using System.Text;
using System.Transactions;
using static System.Console;
static void AddPlayers(Game game)
{
NotificationClass nc = new NotificationClass();
while (game.PlayerList.Count < 4)
{
Write("Enter player tag : ");
string? playerTag = ReadLine();
if (game.AddPlayerInGame(playerTag) == false)
{
WriteLine("ERROR : Player already exist or game is running !");
}
else
{
WriteLine("Player " + playerTag + " added !");
}
game.AddPlayerInGame(playerTag);
game.PlayerAddNotified -= nc.NotificationMessagePlayer;
game.PlayerAddNotified += nc.NotificationMessagePlayer;
Write("Do you want to add another player ? (y/n) : ");
string? answer = ReadLine();
@ -45,7 +47,7 @@ static void ShowTiles(Game game)
for (int i = 0; i < currentPlayer.Tiles.Count(); i++)
{
stringBuilder.Append("[" + (i+1) + "] ");
stringBuilder.Append("[" + (i + 1) + "] ");
stringBuilder.AppendLine(currentPlayer.Tiles[i].ToString());
}

Loading…
Cancel
Save