diff options
Diffstat (limited to 'go/game/player.go')
| -rw-r--r-- | go/game/player.go | 25 |
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() { |
