From d05ece2efc56d3565d9997f27507d37daa2d5eef Mon Sep 17 00:00:00 2001 From: DTieman Date: Fri, 17 Mar 2023 09:53:15 +0100 Subject: [PATCH] deck shuffling and rooms reset --- Controllers/RoomController.cs | 7 +++++++ Mau/Deck.cs | 15 ++++++++++++++- Websockets/RoomManager.cs | 6 ++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Controllers/RoomController.cs b/Controllers/RoomController.cs index d687512..ac24bd7 100644 --- a/Controllers/RoomController.cs +++ b/Controllers/RoomController.cs @@ -51,4 +51,11 @@ public class RoomController : ControllerBase var id = _roomManager.CreateRoom(); return Ok(id); } + + [HttpDelete] + public IActionResult Delete() + { + _roomManager.RemoveAllRooms(); + return NoContent(); + } } \ No newline at end of file diff --git a/Mau/Deck.cs b/Mau/Deck.cs index b6b1d91..b2b6ff5 100644 --- a/Mau/Deck.cs +++ b/Mau/Deck.cs @@ -14,7 +14,7 @@ public class Deck UnusedDeck.Add(new Card(cardType, cardValue)); } } - UnusedDeck = UnusedDeck.OrderBy(x => Guid.NewGuid()).ToList(); + ShuffleDeck(); } public List GetUnusedDeck() @@ -24,6 +24,7 @@ public class Deck public Card DrawCard() { + if (UnusedDeck.Count == 0) ReshuffleDeck(); var card = UnusedDeck[0]; UnusedDeck.RemoveAt(0); return card; @@ -43,4 +44,16 @@ public class Deck { UsedDeck.Add(card); } + + private void ReshuffleDeck() + { + UnusedDeck.AddRange(UsedDeck); + UsedDeck.Clear(); + ShuffleDeck(); + } + + private void ShuffleDeck() + { + UnusedDeck = UnusedDeck.OrderBy(x => Guid.NewGuid()).ToList(); + } } \ No newline at end of file diff --git a/Websockets/RoomManager.cs b/Websockets/RoomManager.cs index 5fb699a..280a9c7 100644 --- a/Websockets/RoomManager.cs +++ b/Websockets/RoomManager.cs @@ -31,6 +31,11 @@ public class RoomManager : IRoomManager { return Rooms.ContainsKey(roomId); } + + public void RemoveAllRooms() + { + Rooms.Clear(); + } } public interface IRoomManager @@ -40,4 +45,5 @@ public interface IRoomManager public List GetAllRooms(); public void RemoveRoom(string roomId); public bool RoomExists(string roomId); + public void RemoveAllRooms(); } \ No newline at end of file