draw works

This commit is contained in:
2023-03-21 12:25:14 +01:00
parent e9ca9a085e
commit bae605da54
3 changed files with 47 additions and 5 deletions

18
Mau/ActionDTO.cs Normal file
View File

@@ -0,0 +1,18 @@
namespace MauMau_Server.Mau;
public class ActionDTO
{
public string Action { get; set; }
public string Data { get; set; }
public ActionDTO(string action, string data)
{
Action = action;
Data = data;
}
public ActionDTO()
{
}
}

View File

@@ -1,4 +1,5 @@
using System.Net.WebSockets;
using System.Text.Json;
namespace MauMau_Server.Mau;
@@ -32,10 +33,27 @@ public class Game
Players.Remove(player);
}
public void PlayCard(string playerId, Card card)
public void handleAction(string playerId, ActionDTO action)
{
var player = GetPlayer(playerId);
if (CurrentPlayer != player) return;
switch (action.Action)
{
case "PLAYCARD":
{
var card = JsonSerializer.Deserialize<CardDTO>(action.Data).ToCard();
PlayCard(player, card);
break;
}
case "DRAW":
DrawCard(player);
break;
}
}
private void PlayCard(Player player, Card card)
{
var hand = player.Hand;
if (!IsCardInHand(hand, card) || !IsCardPlayable(CurrentCard, card)) return;
Deck.AddCardToUsedDeck(card);
@@ -44,7 +62,13 @@ public class Game
CurrentPlayer = GetNextPlayer();
}
public Player GetNextPlayer()
private void DrawCard(Player player)
{
player.Hand.Add(Deck.DrawCard());
CurrentPlayer = GetNextPlayer();
}
private Player GetNextPlayer()
{
var index = Players.IndexOf(CurrentPlayer);
index += TurnDirection;

View File

@@ -24,8 +24,8 @@ public class Room
while (!result.CloseStatus.HasValue)
{
var slicedBuffer = buffer[0..result.Count];
var playedCard = JsonSerializer.Deserialize<CardDTO>(slicedBuffer).ToCard();
_game.PlayCard(socketId, playedCard);
var action = JsonSerializer.Deserialize<ActionDTO>(slicedBuffer);
_game.handleAction(socketId, action);
BroadcastGameState();
buffer = EmptyBuffer();
result = await ReceiveAsync(socket, buffer);