aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-12-27 12:41:38 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2025-01-27 16:43:58 +0100
commita504a91ef4ed49ba451de14f04ef02472dfcb189 (patch)
tree852dfcac3a47fd423095bf0b0d112322a7795e51
parent4e2ab55d345fd5e5c5d2d5bc56948611b15564d5 (diff)
downloadmuhqs-game-a504a91ef4ed49ba451de14f04ef02472dfcb189.tar.gz
muhqs-game-a504a91ef4ed49ba451de14f04ef02472dfcb189.zip
improve and fix slow action timing check
Do not allow to declare slow play actions in the client. Fix the slow action check in the game state.
-rw-r--r--go/client/game.go4
-rw-r--r--go/game/state.go10
2 files changed, 10 insertions, 4 deletions
diff --git a/go/client/game.go b/go/client/game.go
index 50f0400b..6c2f41e0 100644
--- a/go/client/game.go
+++ b/go/client/game.go
@@ -502,6 +502,10 @@ func (g *Game) handleSelection(obj interface{}, x, y int) {
g.addPermActionChoice(perm, x, y)
case ui.HandCard:
+ if obj.C.IsPermanent() && !g.gameState.Stack().IsEmpty() {
+ return
+ }
+
if obj.C.PlayCosts.IsVariadic() {
g.addChoice(ui.NewNumberChoice(
g.Width-ui.NUMBER_CHOICE_WIDTH,
diff --git a/go/game/state.go b/go/game/state.go
index cf7b7111..577a0cb8 100644
--- a/go/game/state.go
+++ b/go/game/state.go
@@ -424,7 +424,7 @@ func (s *LocalState) declareAction(a Action) {
err = a.CheckTargets(s)
- if err != nil {
+ if err == nil {
switch a.(type) {
case *BuyAction:
if s.activePhase != Phases.BuyPhase {
@@ -446,9 +446,11 @@ func (s *LocalState) declareAction(a Action) {
}
s.broadcastNotification(newDeclaredActionNotification(a, err))
- t := a.Targets()
- if t != nil {
- s.events = append(s.events, newTargetEvent(a, t))
+ if err == nil {
+ t := a.Targets()
+ if t != nil {
+ s.events = append(s.events, newTargetEvent(a, t))
+ }
}
}