diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-01-25 21:10:44 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-01-27 16:43:44 +0100 |
| commit | 8720ebf9c74d9e11001772b5c00c293fa3a8b9e5 (patch) | |
| tree | 70013771c425746318d290b5cadad0bbc1a48abb /go/game/player.go | |
| parent | 73d40903aecad3efcf7c6055c133f0db86558203 (diff) | |
| download | muhqs-game-8720ebf9c74d9e11001772b5c00c293fa3a8b9e5.tar.gz muhqs-game-8720ebf9c74d9e11001772b5c00c293fa3a8b9e5.zip | |
intermediate commit
Diffstat (limited to 'go/game/player.go')
| -rw-r--r-- | go/game/player.go | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/go/game/player.go b/go/game/player.go index 1e8c32f9..017e8407 100644 --- a/go/game/player.go +++ b/go/game/player.go @@ -2,6 +2,7 @@ package game import ( "image/color" + "log" ) const ( @@ -12,24 +13,40 @@ type Player struct { Id int Name string Turn int + Ressource int DrawPerTurn int Hand *Hand DiscardPile *DiscardPile Deck *Deck Store *Store - Ressource int gameState *State Color color.Color Ctrl PlayerControl } -func NewPlayer(id int, name string, deck *Deck, store *Store, gameState *State, color color.Color) *Player { - p := Player{id, name, 0, MAX_DRAW, NewHand(), NewDiscardPile(), deck, store, 0, gameState, color, nil} +func NewPlayer(id int, name string, + deck *Deck, store *Store, + gameState *State, color color.Color, +) *Player { + p := Player{ + id, name, + 0, 0, MAX_DRAW, + NewHand(), NewDiscardPile(), deck, store, + gameState, color, nil, + } return &p } +func (p *Player) resourceGain() int { + if p.Name == "The kraken" { + return p.gameState.Map.RessourceGain * (len(p.gameState.Players) - 1) + } else { + return p.gameState.Map.RessourceGain + } +} + func (p *Player) Upkeep() { - p.Ressource += p.gameState.Map.RessourceGain + p.Ressource += p.resourceGain() // TODO: handle upkeep triggers @@ -40,15 +57,21 @@ func (p *Player) Upkeep() { // TODO: let players decide if they want to pay the upkeep p.Ressource -= unit.Upkeep + // TODO: better refresh unit actions + unit.AvailAttackActions = 1 + unit.AvailMoveActions = 1 } } func (p *Player) ActionPhase() { - a := PromptAction(p.Ctrl) - for _, ok := a.(*PassPriorityAction); !ok; { + for { + a := PromptAction(p.Ctrl) + log.Printf("Received %T action from %s\n", a, p.Name) + if _, ok := a.(*PassPriorityAction); ok { + return + } p.gameState.DeclareAction(a) p.gameState.Stack.Resolve() - a = PromptAction(p.Ctrl) } } @@ -57,7 +80,7 @@ func (p *Player) buy(c *Card) { p.DiscardPile.AddCard(c) } -func (p *Player) BuyStep() { +func (p *Player) BuyPhase() { // TODO: select card to buy } @@ -65,7 +88,7 @@ func (p *Player) DiscardCard(c *Card) { p.Hand.MoveCard(c, p.DiscardPile) } -func (p *Player) DiscardStep() { +func (p *Player) DiscardPhase() { // TODO: select cards to discard } @@ -75,9 +98,10 @@ func (p *Player) Draw() { return } - drawnCards := p.Deck.Draw(toDraw) - p.Hand.AddCards(drawnCards) + p.DrawN(toDraw) } -func (p *Player) PlayPermanent(card *Card) { +func (p *Player) DrawN(n int) { + drawnCards := p.Deck.Draw(n) + p.Hand.AddCards(drawnCards) } |
