diff --git a/card.go b/card.go index 4388234..8e21197 100644 --- a/card.go +++ b/card.go @@ -19,6 +19,7 @@ func NewCard(v, o, p int, id uuid.UUID) *Card { Owner: o, Position: p, Spell: OracleSpell(CardType(v), nil), + Token: OracleToken(CardType(v), nil), Effects: []*Effect{}, } } diff --git a/deck.go b/deck.go index 6addd95..96e0ee3 100644 --- a/deck.go +++ b/deck.go @@ -23,8 +23,8 @@ func LoadDeck(owner int, cards []int) *Deck { return NewDeck(owner) } d := []*Card{} - for k, v := range cards { - d[k] = NewCard(v, owner, -1, uuid.Nil) + for _, v := range cards { + d = append(d, NewCard(v, owner, -1, uuid.Nil)) } return &Deck{ Cards: d, @@ -32,8 +32,14 @@ func LoadDeck(owner int, cards []int) *Deck { } func ValidateDeck(cards []int) bool { + if len(cards) < 7 { + return false + } for _, v := range cards { - if CardType(v).IsACardType() { + if !CardType(v).IsACardType() { + return false + } + if OracleToken(CardType(v), nil) { return false } } diff --git a/game.go b/game.go index b55208a..0ec98da 100644 --- a/game.go +++ b/game.go @@ -27,8 +27,6 @@ type Game struct { func NewGame(sentDeck []int, scoDeck []int) *Game { deckA := LoadDeck(SentinalID, sentDeck) deckB := LoadDeck(ScourgeID, scoDeck) - deckA.Shuffle() - deckB.Shuffle() return &Game{ GameBoard: NewBoard(), SentinalPlayer: NewPlayer("Sentinal", SentinalID), @@ -150,6 +148,8 @@ func (g *Game) PlayerStateAct(id int, cmd string) *GameView { } if g.SentinalPlayer.Ready && g.ScourgePlayer.Ready && g.Status == StatusLobby { g.Status = StatusReady + g.SentinalDeck.Shuffle() + g.ScourgeDeck.Shuffle() if id == SentinalID { g.SentinalPlayer.Hand = g.SentinalDeck.Cards[len(g.SentinalDeck.Cards)-5 : len(g.SentinalDeck.Cards)] g.SentinalDeck.Cards = g.SentinalDeck.Cards[0 : len(g.SentinalDeck.Cards)-5] diff --git a/oracle.go b/oracle.go index 69f60a8..9dc3a34 100644 --- a/oracle.go +++ b/oracle.go @@ -29,7 +29,14 @@ func OracleSpell(c CardType, g *Game) bool { return false } } - +func OracleToken(c CardType, g *Game) bool { + switch c { + case GoblinSpawn: + return true + default: + return false + } +} func OracleCast(c *Card, g *Game) bool { switch c.Type { case Valk: