aboutsummaryrefslogtreecommitdiff
path: root/go/game/player.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/game/player.go')
-rw-r--r--go/game/player.go25
1 files changed, 15 insertions, 10 deletions
diff --git a/go/game/player.go b/go/game/player.go
index f7f5be7c..2edbe923 100644
--- a/go/game/player.go
+++ b/go/game/player.go
@@ -111,7 +111,7 @@ func (p *Player) reduceResource(amount int) {
}
}
-func (p *Player) upkeep() {
+func (p *Player) upkeep() []*Player {
p.gainResource(p.ResourceGain())
// TODO: handle upkeep triggers
@@ -125,7 +125,7 @@ func (p *Player) upkeep() {
}
}
if !controllsUnits {
- return
+ return nil
}
a, err := prompt(p.Ctrl, newUpkeepPrompt(p))
@@ -139,30 +139,33 @@ func (p *Player) upkeep() {
// FIXME: upkeep action is special paying is part of its effect
p.gameState.declareAction(a)
- p.gameState.stack.resolve()
+ return p.gameState.stack.resolve()
}
-func (p *Player) actionPhase() {
+func (p *Player) actionPhase() []*Player {
for {
a, err := promptAction(p.Ctrl)
if err != nil {
// FIXME
}
if _, ok := a.(*PassPriority); ok {
- return
+ return nil
}
if a == nil {
log.Fatal("Received nil action from ", p.Name)
}
p.gameState.declareAction(a)
- p.gameState.stack.resolve()
+ w := p.gameState.stack.resolve()
+ if len(w) > 0 {
+ return w
+ }
}
}
-func (p *Player) buyPhase() {
+func (p *Player) buyPhase() []*Player {
s := p.gameState
if p.Store.Size() == 0 && s.Map().HasStores() && len(p.knownStores) == 0 {
- return
+ return nil
}
a, err := promptBuy(p.Ctrl)
if err != nil {
@@ -170,13 +173,15 @@ func (p *Player) buyPhase() {
}
if _, ok := a.(*PassPriority); ok {
- return
+ return nil
}
if a.Targets().HasSelections() {
s.declareAction(a)
- s.stack.resolve()
+ return s.stack.resolve()
}
+
+ return nil
}
func (p *Player) discardHand() {