summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2025-04-29 00:47:10 +0200
committerTor Andersson <tor@ccxvii.net>2025-04-29 00:47:10 +0200
commitfe2a4dfa54363430761b7ac1d00fe2471ba366d5 (patch)
treebffccc04e95b9377d718d5088d90f59f5a074234
parent26827b4dc6aa0a1c1c8d4e26f5d5e1ff32622cef (diff)
downloadshores-of-tripoli-fe2a4dfa54363430761b7ac1d00fe2471ba366d5.tar.gz
Use multi-active state.
-rw-r--r--rules.js18
1 files changed, 11 insertions, 7 deletions
diff --git a/rules.js b/rules.js
index a7aa0de..d1a5f2e 100644
--- a/rules.js
+++ b/rules.js
@@ -305,8 +305,12 @@ function flush_summary(text, add_plural_s=false) {
delete game.summary;
}
+function is_active_player(current) {
+ return (game.active === current) || (Array.isArray(game.active) && game.active.includes(current))
+}
+
function is_inactive_player(current) {
- return current === "Observer" || (game.active !== current && game.active !== "Both");
+ return !is_active_player(current)
}
function you_may_play(current, list) {
@@ -662,11 +666,11 @@ function goto_hand_size() {
game.us.queue = [];
if (game.tr.queue && game.us.queue)
- game.active = "Both";
+ game.active = [ TR, US ];
else if (game.tr.queue)
- game.active = TR;
+ game.active = [ TR ];
else if (game.us.queue)
- game.active = US;
+ game.active = [ US ];
else
goto_american_play();
}
@@ -745,11 +749,11 @@ states.hand_size = {
delete game.us.queue;
}
if (game.tr.queue && game.us.queue)
- game.active = "Both";
+ game.active = [ TR, US ];
else if (game.tr.queue)
- game.active = TR;
+ game.active = [ TR ];
else if (game.us.queue)
- game.active = US;
+ game.active = [ US ];
else
goto_american_play();
},