From ff978dc640fe18d164f05059cb7a870c6027105c Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 13 Apr 2021 20:46:58 +0100 Subject: [PATCH] js: Handle counted selection of mixed held states Signed-off-by: Ian Jackson --- templates/script.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/templates/script.ts b/templates/script.ts index 890566a4..3557357f 100644 --- a/templates/script.ts +++ b/templates/script.ts @@ -867,18 +867,20 @@ function mouse_find_predicate( let piece = uelem.dataset.piece!; let p = pieces[piece]; if (p.pinned && !wresting) continue; + if (p.held && p.held != us && !wresting) continue; if (!predicate(p)) { continue; } if (p.pinned) pinned = true; - if (i > 0) { - if (p.held != held) { - add_log_message(`Mixed held states! Stopped after ${i}`); - return null; - } + if (i == 0) { + held = p.held; + } else if (held == us) { // user is going to be deselecting + if (p.held != us) continue; // skip ones we don't have + } else { // user is going to be selecting + if (p.held == us) continue; // skip ones we have already + if (held == null) held = p.held; // wrestish } clicked.push(piece); - held = p.held; } if (clicked.length == 0) return null; else return { clicked, held: held!, pinned: pinned! }; -- 2.30.2