diff --git a/Controllers/RoomController.cs b/Controllers/RoomController.cs index 85fe489..ff786d9 100644 --- a/Controllers/RoomController.cs +++ b/Controllers/RoomController.cs @@ -27,23 +27,21 @@ public class RoomController : ControllerBase [HttpGet("{id}")] public async Task ConnectToRoom(string id) { - if (HttpContext.WebSockets.IsWebSocketRequest) - { - if (_roomManager.RoomExists(id)) - { - using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(); - var room = _roomManager.GetRoom(id); - await room.InstantiateConnection(webSocket); - } - else - { - HttpContext.Response.StatusCode = 404; - } - } - else + if (!HttpContext.WebSockets.IsWebSocketRequest) { HttpContext.Response.StatusCode = 400; + return; } + + if (!_roomManager.RoomExists(id)) + { + HttpContext.Response.StatusCode = 404; + return; + } + + using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(); + var room = _roomManager.GetRoom(id); + await room.InstantiateConnection(webSocket); } [HttpPost] diff --git a/Mau/Game.cs b/Mau/Game.cs index 2e0b95a..b7516a1 100644 --- a/Mau/Game.cs +++ b/Mau/Game.cs @@ -1,5 +1,4 @@ -using System.Net.WebSockets; -using System.Text.Json; +using System.Text.Json; using MauMau_Server.Websockets; namespace MauMau_Server.Mau; @@ -25,7 +24,9 @@ public class Game Hand = Deck.DrawCards(8) }; Players.Add(player); - if (Players.Count == 1) CurrentPlayer = player; + if (Players.Count > 1) return; + CurrentPlayer = player; + CurrentPlayer.State = PlayerState.TURN; } public void RemovePlayer(string playerId) @@ -42,6 +43,10 @@ public class Game { case "PLAYCARD": { + if (player.State != PlayerState.TURN) + { + break; + } var card = JsonSerializer.Deserialize(action.Data).ToCard(); PlayCard(player, card); break; @@ -58,6 +63,10 @@ public class Game CurrentPlayer.State = PlayerState.TURN; break; case "DRAW": + if (player.State != PlayerState.TURN) + { + break; + } DrawCard(player); break; }