chiark / gitweb /
js: Provide ungrab_all_except (and PieceSet)
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 13 Apr 2021 20:05:50 +0000 (21:05 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 13 Apr 2021 20:21:28 +0000 (21:21 +0100)
Nothing calls the new function yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
templates/script.ts

index 26c8b35e7292cd47dfe08697376b6539ec47b67c..0ad65c1fbbe327c6394689b0fa76a33e2533724e 100644 (file)
@@ -840,6 +840,8 @@ type MouseFindClicked = null | {
   pinned: boolean
 };
 
+type PieceSet = { [piece: string]: true };
+
 function grab_clicked(clicked: PieceId[]) {
   for (let piece of clicked) {
     let p = pieces[piece]!;
@@ -1015,14 +1017,18 @@ function p_bbox_contains(p: PieceInfo, test: Pos) {
   return true;
 }
 
-function ungrab_all() {
+function ungrab_all_except(dont: PieceSet | null) {
   for (let tpiece of Object.keys(pieces)) {
+    if (dont && dont[tpiece]) continue;
     let tp = pieces[tpiece]!;
     if (tp.held == us) {
       do_ungrab(tpiece,tp);
     }
   }
 }
+function ungrab_all() {
+  ungrab_all_except(null);
+}
 
 function set_grab_us(piece: PieceId, p: PieceInfo) {
   p.held = us;