diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2024-12-26 18:48:32 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-08-20 15:57:11 +0200 |
| commit | 65451383dcd1754c558379abf6e36d4cba5eee4a (patch) | |
| tree | 18b5d6627e14a5fd8add50f93ef1d84230cb24d6 /go/game | |
| parent | 18053f830f4674277cd80c09f72250810478da7e (diff) | |
| download | muhqs-game-65451383dcd1754c558379abf6e36d4cba5eee4a.tar.gz muhqs-game-65451383dcd1754c558379abf6e36d4cba5eee4a.zip | |
add helper to get the game state from an action
Diffstat (limited to 'go/game')
| -rw-r--r-- | go/game/action.go | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/go/game/action.go b/go/game/action.go index b460a27a..30bad0b1 100644 --- a/go/game/action.go +++ b/go/game/action.go @@ -14,6 +14,7 @@ type ( type Action interface { Source() interface{} Controller() *Player + GameState() *State Targets() *Targets Target() *Target // Shortcut for to select the first target @@ -28,6 +29,7 @@ type PassPriority struct{ player *Player } func (a *PassPriority) Source() interface{} { return a.player } func (a *PassPriority) Controller() *Player { return a.player } +func (a *PassPriority) GameState() *State { return a.player.gameState } func (*PassPriority) Targets() *Targets { return nil } func (*PassPriority) Target() *Target { return nil } func (*PassPriority) NeedsActionCostChoice() bool { return false } @@ -44,6 +46,7 @@ type TargetSelection struct { func (sel *TargetSelection) Source() interface{} { return sel.player } func (sel *TargetSelection) Controller() *Player { return sel.player } +func (sel *TargetSelection) GameState() *State { return sel.player.gameState } func (sel *TargetSelection) Targets() *Targets { return sel.targets } func (sel *TargetSelection) Target() *Target { return sel.targets.ts[0] } func (*TargetSelection) NeedsActionCostChoice() bool { return false } @@ -82,10 +85,9 @@ func (a *ActionBase) Controller() *Player { log.Panicf("Unhandled source type %v", t) return nil } - - return nil } -func (a *ActionBase) resolve(s *State) { a.resolveFunc(s) } +func (a *ActionBase) GameState() *State { return a.Controller().gameState } +func (a *ActionBase) resolve(s *State) { a.resolveFunc(s) } func (a *ActionBase) PayCosts(s *State) bool { if a.costFunc != nil { return a.costFunc(s) @@ -131,6 +133,7 @@ type DeclareTriggeredActionsAction struct { func (sel *DeclareTriggeredActionsAction) Source() interface{} { return nil } func (sel *DeclareTriggeredActionsAction) Controller() *Player { return nil } +func (sel *DeclareTriggeredActionsAction) GameState() *State { return nil } func (sel *DeclareTriggeredActionsAction) Targets() *Targets { return nil } func (sel *DeclareTriggeredActionsAction) Target() *Target { return nil } func (*DeclareTriggeredActionsAction) NeedsActionCostChoice() bool { return false } |
