chiark / gitweb /
js: Handle special_count of >1
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 3 Apr 2021 23:31:19 +0000 (00:31 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 4 Apr 2021 19:07:53 +0000 (20:07 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
templates/script.ts

index d595506c5ed1082284ff87130d044113a5fcc713..ab73bb94da850db7f7e34ff48abc3a1bc3e55442 100644 (file)
@@ -845,8 +845,28 @@ function drag_mousedown(e : MouseEvent, shifted: boolean) {
       }
     }
   } else {
-    mouseevent_pos(e);
-    return;
+    // special_count > 0
+    clicked = [];
+    let uelem = defs_marker;
+    for (let i=0; i<special_count; i++) {
+      uelem = uelem.previousElementSibling as any;
+      if (uelem == pieces_marker) {
+       add_log_message(`Not enough pieces!  Stopped after ${i}.`);
+       return;
+      }
+      let piece = uelem.dataset.piece!;
+      let p = pieces[piece];
+      if (i > 0) {
+       if (p.pinned != pinned ||
+           p.held   != held) {
+         add_log_message(`Mixed pinned/held states!  Stopped after ${i}`);
+         return;
+       }
+      }
+      clicked.push(piece);
+      pinned = p.pinned;
+      held   = p.held;
+    }
   }
 
   if (!clicked.length) {