fix(deck-classic): automatically refill card deck

This commit is contained in:
2025-03-21 12:59:30 +01:00
parent c2e895d94a
commit 5e8890d823

View File

@ -17,10 +17,7 @@ type Classic struct {
var ClassicColors = []string{"red", "yellow", "blue", "green"} var ClassicColors = []string{"red", "yellow", "blue", "green"}
func (deck *Classic) Init(room *types.Room) { func (deck *Classic) fillDeck() {
deck.room = room
deck.DirectionReversed = false
deck.ActivePlayer = 0
cards := make([]*ClassicCard, 108) cards := make([]*ClassicCard, 108)
offset := 0 offset := 0
for i := 0; i < 4; i++ { for i := 0; i < 4; i++ {
@ -44,6 +41,13 @@ func (deck *Classic) Init(room *types.Room) {
} }
utils.ShuffleSlice(&cards) utils.ShuffleSlice(&cards)
deck.CardsRemaining = cards deck.CardsRemaining = cards
}
func (deck *Classic) Init(room *types.Room) {
deck.room = room
deck.DirectionReversed = false
deck.ActivePlayer = 0
deck.fillDeck()
deck.room.PlayersMutex.Lock() deck.room.PlayersMutex.Lock()
defer deck.room.PlayersMutex.Unlock() defer deck.room.PlayersMutex.Unlock()
@ -59,7 +63,10 @@ func (deck *Classic) SetRoom(room *types.Room) {
} }
func (deck *Classic) IsEmpty() bool { func (deck *Classic) IsEmpty() bool {
return len(deck.CardsRemaining) == 0 if len(deck.CardsRemaining) == 0 {
deck.fillDeck()
}
return false
} }
func (deck *Classic) getTopCard() *ClassicCard { func (deck *Classic) getTopCard() *ClassicCard {
@ -143,11 +150,7 @@ func (deck *Classic) PlayCard(card types.Card) bool {
amount = 4 amount = 4
} }
for range amount { for range amount {
card := deck.drawCard(targetPlayer) deck.drawCard(targetPlayer)
if card == nil {
// TODO: Handle empty card deck
break
}
} }
} else if deckCard.Symbol == "action:reverse" { } else if deckCard.Symbol == "action:reverse" {
deck.DirectionReversed = !deck.DirectionReversed deck.DirectionReversed = !deck.DirectionReversed