aboutsummaryrefslogtreecommitdiff
path: root/go/game/player.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-01-25 21:10:44 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2025-01-27 16:43:44 +0100
commit8720ebf9c74d9e11001772b5c00c293fa3a8b9e5 (patch)
tree70013771c425746318d290b5cadad0bbc1a48abb /go/game/player.go
parent73d40903aecad3efcf7c6055c133f0db86558203 (diff)
downloadmuhqs-game-8720ebf9c74d9e11001772b5c00c293fa3a8b9e5.tar.gz
muhqs-game-8720ebf9c74d9e11001772b5c00c293fa3a8b9e5.zip
intermediate commit
Diffstat (limited to 'go/game/player.go')
-rw-r--r--go/game/player.go48
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)
}