aboutsummaryrefslogtreecommitdiff
path: root/go/game/kraken.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/game/kraken.go')
-rw-r--r--go/game/kraken.go55
1 files changed, 27 insertions, 28 deletions
diff --git a/go/game/kraken.go b/go/game/kraken.go
index 6ea22876..19adfd3c 100644
--- a/go/game/kraken.go
+++ b/go/game/kraken.go
@@ -10,23 +10,21 @@ const (
KRAKEN_NAME = "Kraken"
)
-// var KrakenDecklist = `2 kraken/angry_squid
-// 2 kraken/chachalot
-// 2 kraken/clownfish
-// 2 kraken/deja_vu!
-// 2 kraken/devour_the_poor!
-// 2 kraken/dolphin
-// 2 kraken/flying_dutchmen
-// 2 kraken/frost_pylon
-// 2 kraken/gigantic_hail
-// 2 kraken/sailfish
-// 2 kraken/sold_out!
-// 2 kraken/suprise!
-// 2 kraken/tentacle_slap
-// 2 kraken/tides_change!
-// 2 kraken/unholy_cannonball`
-
-var KrakenDecklist = `2 kraken/clownfish`
+var KrakenDecklist = `2 kraken/angry_squid
+2 kraken/chachalot
+2 kraken/clownfish
+2 kraken/deja_vu!
+2 kraken/devour_the_poor!
+2 kraken/dolphin
+2 kraken/flying_dutchmen
+2 kraken/frost_pylon
+2 kraken/gigantic_hail
+2 kraken/sailfish
+2 kraken/sold_out!
+2 kraken/suprise!
+2 kraken/tentacle_slap
+2 kraken/tides_change!
+2 kraken/unholy_cannonball`
func NewKraken(id int, s *State) *Player {
kraken := NewPlayer(id, KRAKEN_NAME, NewDeck(), s)
@@ -88,6 +86,7 @@ func (ctrl *KrakenControl) krakenTurn() {
log.Fatalf("Ai turn out of sync %d != %d", ctrl.turn, kraken.Turn)
}
+turn:
for {
drawn := kraken.Deck.Draw(1)
if len(drawn) == 0 {
@@ -107,23 +106,23 @@ func (ctrl *KrakenControl) krakenTurn() {
return true
}
- // TODO: select targets
- var targets interface{}
- if c.IsPermanent() {
- spawns := s.AvailableSpawnTiles(kraken, c)
- if len(spawns) == 0 {
- log.Println("No spawn available for", c.Name)
+ a := NewPlayAction(kraken, c, costFunc)
+ for a.Targets().RequireTargets() {
+ options := a.Targets().NextOptions()
+ if len(options) == 0 {
+ log.Println("No target available for", c.Name)
kraken.DiscardPile.AddCard(c)
- continue
+ continue turn
}
idx := 0
- if len(spawns) > 1 {
- idx = s.Rand.Intn(len(spawns) - 1)
+ if len(options) > 1 {
+ idx = s.Rand.Intn(len(options) - 1)
}
- targets = spawns[idx].Position
+ a.Targets().AddTarget(options[idx])
}
- ctrl.actions <- NewPlayActionWithSpecialCosts(kraken, c, targets, costFunc)
+
+ ctrl.actions <- a
ctrl.awaitGameStateSync()
}