deck shuffling and rooms reset

This commit is contained in:
2023-03-17 09:53:15 +01:00
parent c902493e28
commit d05ece2efc
3 changed files with 27 additions and 1 deletions

View File

@@ -51,4 +51,11 @@ public class RoomController : ControllerBase
var id = _roomManager.CreateRoom(); var id = _roomManager.CreateRoom();
return Ok(id); return Ok(id);
} }
[HttpDelete]
public IActionResult Delete()
{
_roomManager.RemoveAllRooms();
return NoContent();
}
} }

View File

@@ -14,7 +14,7 @@ public class Deck
UnusedDeck.Add(new Card(cardType, cardValue)); UnusedDeck.Add(new Card(cardType, cardValue));
} }
} }
UnusedDeck = UnusedDeck.OrderBy(x => Guid.NewGuid()).ToList(); ShuffleDeck();
} }
public List<Card> GetUnusedDeck() public List<Card> GetUnusedDeck()
@@ -24,6 +24,7 @@ public class Deck
public Card DrawCard() public Card DrawCard()
{ {
if (UnusedDeck.Count == 0) ReshuffleDeck();
var card = UnusedDeck[0]; var card = UnusedDeck[0];
UnusedDeck.RemoveAt(0); UnusedDeck.RemoveAt(0);
return card; return card;
@@ -43,4 +44,16 @@ public class Deck
{ {
UsedDeck.Add(card); UsedDeck.Add(card);
} }
private void ReshuffleDeck()
{
UnusedDeck.AddRange(UsedDeck);
UsedDeck.Clear();
ShuffleDeck();
}
private void ShuffleDeck()
{
UnusedDeck = UnusedDeck.OrderBy(x => Guid.NewGuid()).ToList();
}
} }

View File

@@ -31,6 +31,11 @@ public class RoomManager : IRoomManager
{ {
return Rooms.ContainsKey(roomId); return Rooms.ContainsKey(roomId);
} }
public void RemoveAllRooms()
{
Rooms.Clear();
}
} }
public interface IRoomManager public interface IRoomManager
@@ -40,4 +45,5 @@ public interface IRoomManager
public List<string> GetAllRooms(); public List<string> GetAllRooms();
public void RemoveRoom(string roomId); public void RemoveRoom(string roomId);
public bool RoomExists(string roomId); public bool RoomExists(string roomId);
public void RemoveAllRooms();
} }