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.go31
1 files changed, 16 insertions, 15 deletions
diff --git a/go/game/kraken.go b/go/game/kraken.go
index a836cb77..fccaa6df 100644
--- a/go/game/kraken.go
+++ b/go/game/kraken.go
@@ -1,6 +1,7 @@
package game
import (
+ "image/color"
"log"
"strings"
"sync"
@@ -26,17 +27,17 @@ var KrakenDecklist = `2 kraken/angry_squid
2 kraken/tides_change!
2 kraken/unholy_cannonball`
-func NewKraken(id int, s *State) *Player {
- kraken := NewPlayer(id, KRAKEN_NAME, NewDeck(), s)
+func NewKraken(id int, s *LocalState, color color.Color) *Player {
+ kraken := NewPlayer(id, KRAKEN_NAME, NewDeck(), s, color)
d := NewDeckFromDeckList(KrakenDecklist)
d.Shuffle(s.Rand)
kraken.Deck = d
kraken.DrawPerTurn = 0
- kraken_tile := s.Map.FilterTiles(func(t *Tile) bool { return t.Raw == "the kraken" })
+ kraken_tile := s.Map().FilterTiles(func(t *Tile) bool { return t.Raw == "the kraken" })
if len(kraken_tile) != 1 {
- log.Fatal("No kraken tile found in Map")
+ log.Fatal("No kraken tile found in Map()")
}
s.addPermanent(NewUnitFromPath("kraken/the_kraken", kraken_tile[0], kraken))
@@ -46,9 +47,9 @@ func NewKraken(id int, s *State) *Player {
return kraken
}
-func (s *State) AddKraken() {
- kraken := NewKraken(len(s.Players)+1, s)
- s.Players = append(s.Players, kraken)
+func (s *LocalState) AddKraken(color color.Color) {
+ kraken := NewKraken(len(s.Players())+1, s, color)
+ s.players = append(s.players, kraken)
}
type KrakenControl struct {
@@ -70,7 +71,7 @@ func addKrakenControl(kraken *Player) {
ctrl.syncGameState.Add(1)
go func() {
s := kraken.gameState
- for len(s.Map.WinCondition(s)) == 0 {
+ for len(s.Map().WinCondition(s)) == 0 {
ctrl.krakenTurn()
}
}()
@@ -112,7 +113,7 @@ func (ctrl *KrakenControl) krakenTurn() {
}
kraken.Hand.AddCard(c)
- var costFunc ActionCostFunc = func(s *State) bool {
+ var costFunc ActionCostFunc = func(s *LocalState) bool {
kraken.Resource -= costs
return true
}
@@ -154,7 +155,7 @@ func (ctrl *KrakenControl) RecvAction() Action {
s := ctrl.kraken.gameState
kraken := ctrl.kraken
if !s.IsActivePlayer(kraken) ||
- s.ActivePhase != Phases.ActionPhase || !s.Stack.IsEmpty() {
+ s.activePhase != Phases.ActionPhase || !s.stack.IsEmpty() {
return NewPassPriority(ctrl.kraken)
}
@@ -170,8 +171,8 @@ func (p *Player) IsKraken() bool {
return p.Name == KRAKEN_NAME
}
-func (s *State) FindKraken() *Player {
- for _, p := range s.Players {
+func (s *LocalState) FindKraken() *Player {
+ for _, p := range s.Players() {
if p.IsKraken() {
return p
}
@@ -179,17 +180,17 @@ func (s *State) FindKraken() *Player {
return nil
}
-func (s *State) KrakenSpawnTiles() []*Tile {
+func (s *LocalState) KrakenSpawnTiles() []*Tile {
kraken := s.FindKraken()
if !kraken.Ctrl.(*KrakenControl).activeSuprise {
- return s.Map.FilterTiles(func(t *Tile) bool {
+ return s.Map().FilterTiles(func(t *Tile) bool {
return strings.Contains(t.Raw, "deep water spawn")
})
}
spawns := []*Tile{}
for _, u := range s.EnemyUnits(kraken) {
- spawns = append(spawns, TilesInRange(s.Map, u, 1)...)
+ spawns = append(spawns, TilesInRange(s.Map(), u, 1)...)
}
return spawns
}