chiark / gitweb /
wip raise
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 8 Jul 2020 01:12:06 +0000 (02:12 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 8 Jul 2020 01:12:06 +0000 (02:12 +0100)
src/gamestate.rs
src/pieces.rs
templates/script.ts

index cdd4a3e4c26b19caba6f162d0dc11bdc2735995a..20d3decfa39bfa1a9ae13b5177a3d081997f3bd1 100644 (file)
@@ -42,6 +42,8 @@ pub trait Piece : Send + Debug {
   fn svg_select(&self, pri : &PieceRenderInstructions) -> String;
   fn svg_x_ids(&self) -> VisiblePieceIdSvgIds;
   fn svg_x_defs(&self, pri : &PieceRenderInstructions) -> String;
+  fn thresh_dragraise(&self, pri : &PieceRenderInstructions)
+                      -> Option<Coord>;
   fn describe_html(&self, face : Option<FaceId>) -> String;
 }
 
@@ -67,8 +69,14 @@ impl PieceRecord {
   pub fn make_defs(&self, pri : &PieceRenderInstructions) -> String {
     let pr = self;
     let mut defs = String::new();
-    write!(defs, r##"<g id="{}">{}</g>"##,
+    let dragraise = match pr.p.thresh_dragraise(pri) {
+      Some(n) if n < 0 => panic!(),
+      Some(n) => n,
+      None => -1,
+    };
+    write!(defs, r##"<g id="{}" data-dragraise="{}">{}</g>"##,
            pri.id_piece(),
+           dragraise,
            pr.p.svg_piece(&pri)).unwrap();
     write!(defs, r##"<g id="{}" stroke="black" fill="none">{}</g>"##,
            pri.id_select(),
index b4dc7899910c3494a6839c8b0abe13d686ae84a1..ee45588393e9499a908cd47d3a5c493b77980ff5 100644 (file)
@@ -17,11 +17,13 @@ const SELECT_SCALE : f64 = 1.1;
 
 impl Piece for SimpleShape {
   fn svg_piece(&self, pri : &PieceRenderInstructions) -> String {
-    format!(r##"<use fill="{}" href="#{}" data-dragraise="{}"/>"##,
+    format!(r##"<use fill="{}" href="#{}"/>"##,
             self.colours[pri.face],
-            pri.id_x("base"),
-            self.approx_dia / 2,
-    )
+            pri.id_x("base"))
+  }
+  fn thresh_dragraise(&self, _pri : &PieceRenderInstructions)
+                      -> Option<Coord> {
+    Some(self.approx_dia / 2)
   }
   fn svg_select(&self, pri : &PieceRenderInstructions) -> String {
     format!(r##"<g transform="scale({})"><use href="#{}"/></g>"##,
index 44650f8e3ee9f41272cd3658661359a9a1267ffd..f8b670daae62ad575f2bc7c1f1c2337a56cad4e4 100644 (file)
@@ -226,14 +226,18 @@ function drag_mousemove(e: MouseEvent) {
 
 function drag_mouseup(e: MouseEvent) {
   console.log('mouseup', dragging);
-  let ddr2 = drag_mousemove(e);
-  //console.log('mouseup ...', dragging);
+  let ddr2 : number = drag_mousemove(e);
+  let piece = drag_uelem!.dataset.piece!;
+  let pelem = piece_element('piece',piece)!;
+  let dragraise = +pelem.dataset.dragraise!;
+  console.log('CHECK RAISE ', dragraise, dragraise*dragraise, ddr2);
+  if (dragraise > 0 && ddr2 >= dragraise*dragraise) {
+    api_piece(api, "raise", piece, drag_uelem!, { });
+  }
   if (dragging == DRAGGING.MAYBE_UNGRAB ||
       dragging == (DRAGGING.MAYBE_GRAB | DRAGGING.YES)) {
-    var piece = drag_uelem!.dataset.piece!;
-    var pelem = piece_element('piece',piece)!;
     set_ungrab(drag_uelem!, pelem);
-    api_piece(api, 'ungrab', drag_uelem!.dataset.piece!, drag_uelem!, { });
+    api_piece(api, 'ungrab', piece, drag_uelem!, { });
   }
   drag_cancel();
 }