diff options
Diffstat (limited to 'go/game/kraken.go')
| -rw-r--r-- | go/game/kraken.go | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/go/game/kraken.go b/go/game/kraken.go index 177423ff..6ea22876 100644 --- a/go/game/kraken.go +++ b/go/game/kraken.go @@ -1,7 +1,6 @@ package game import ( - "image/color" "log" "strings" "sync" @@ -27,10 +26,10 @@ const ( // 2 kraken/tides_change! // 2 kraken/unholy_cannonball` -var KrakenDecklist = `2 kraken/frost_pylon` +var KrakenDecklist = `2 kraken/clownfish` -func NewKraken(id int, s *State, c color.Color) *Player { - kraken := NewPlayer(id, KRAKEN_NAME, NewDeck(), s, c) +func NewKraken(id int, s *State) *Player { + kraken := NewPlayer(id, KRAKEN_NAME, NewDeck(), s) d := NewDeckFromDeckList(KrakenDecklist) d.Shuffle(s.Rand) kraken.Deck = d @@ -49,14 +48,20 @@ func NewKraken(id int, s *State, c color.Color) *Player { return kraken } +func (s *State) AddKraken() { + kraken := NewKraken(len(s.Players)+1, s) + s.Players = append(s.Players, kraken) +} + type KrakenControl struct { kraken *Player actions chan Action syncGameState *sync.WaitGroup + turn int } func addKrakenControl(kraken *Player) { - ctrl := &KrakenControl{kraken, make(chan Action), new(sync.WaitGroup)} + ctrl := &KrakenControl{kraken, make(chan Action), new(sync.WaitGroup), 0} kraken.Ctrl = ctrl ctrl.syncGameState.Add(1) @@ -78,6 +83,10 @@ func (ctrl *KrakenControl) krakenTurn() { kraken := ctrl.kraken ctrl.awaitGameStateSync() + ctrl.turn++ + if ctrl.turn != kraken.Turn { + log.Fatalf("Ai turn out of sync %d != %d", ctrl.turn, kraken.Turn) + } for { drawn := kraken.Deck.Draw(1) |
