chiark / gitweb /
raise during motion
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 11 Jul 2020 20:33:11 +0000 (21:33 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 11 Jul 2020 20:33:11 +0000 (21:33 +0100)
templates/script.ts

index 609f3dd256a108a6eddd31bc66e0713b31e4e714..80e196ebcc7219853c59e8fd62f277ac37775767 100644 (file)
@@ -168,6 +168,7 @@ enum DRAGGING { // bitmask
   MAYBE_GRAB   = 1,
   MAYBE_UNGRAB = 2,
   YES          = 4,
+  RAISED       = 8,
 };
 
 var drag_piece : PieceId | null;
@@ -245,6 +246,20 @@ function drag_mousemove(e: MouseEvent) {
     p.uelem.setAttributeNS(null, "x", x+"");
     p.uelem.setAttributeNS(null, "y", y+"");
     api_piece(api_delay, 'm', piece,p, [x, y] );
+
+    if (!(dragging & DRAGGING.RAISED)) {
+      let dragraise = +p.pelem.dataset.dragraise!;
+      if (dragraise > 0 && ddr2 >= dragraise*dragraise) {
+       dragging |= DRAGGING.RAISED;
+       console.log('CHECK RAISE ', dragraise, dragraise*dragraise, ddr2);
+       piece_set_zlevel(piece,p, (oldtop_piece) => {
+         let oldtop_p = pieces[oldtop_piece]!;
+         let z = oldtop_p.z + 1;
+         p.z = z;
+         api_piece(api, "setz", piece,p, { z: z });
+       });
+      }
+    }
   }
   return ddr2;
 }
@@ -254,18 +269,8 @@ function drag_mouseup(e: MouseEvent) {
   let ddr2 : number = drag_mousemove(e);
   let piece = drag_piece!;
   let p = pieces[piece]!;
-  let dragraise = +p.pelem.dataset.dragraise!;
-  console.log('CHECK RAISE ', dragraise, dragraise*dragraise, ddr2);
-  if (dragraise > 0 && ddr2 >= dragraise*dragraise) {
-    piece_set_zlevel(piece,p, (oldtop_piece) => {
-      let oldtop_p = pieces[oldtop_piece]!;
-      let z = oldtop_p.z + 1;
-      p.z = z;
-      api_piece(api, "setz", piece,p, { z: z });
-    });
-  }
   if (dragging == DRAGGING.MAYBE_UNGRAB ||
-      dragging == (DRAGGING.MAYBE_GRAB | DRAGGING.YES)) {
+      (dragging & ~DRAGGING.RAISED) == (DRAGGING.MAYBE_GRAB | DRAGGING.YES)) {
     set_ungrab(piece,p);
     api_piece(api, 'ungrab', piece,p, { });
   }