From 24393c7e9b267ebdf85081f1e16edc93c7d0530f Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 8 Jul 2020 02:12:06 +0100 Subject: [PATCH] wip raise --- src/gamestate.rs | 10 +++++++++- src/pieces.rs | 10 ++++++---- templates/script.ts | 14 +++++++++----- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/gamestate.rs b/src/gamestate.rs index cdd4a3e4..20d3decf 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -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; fn describe_html(&self, face : Option) -> 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##"{}"##, + let dragraise = match pr.p.thresh_dragraise(pri) { + Some(n) if n < 0 => panic!(), + Some(n) => n, + None => -1, + }; + write!(defs, r##"{}"##, pri.id_piece(), + dragraise, pr.p.svg_piece(&pri)).unwrap(); write!(defs, r##"{}"##, pri.id_select(), diff --git a/src/pieces.rs b/src/pieces.rs index b4dc7899..ee455883 100644 --- a/src/pieces.rs +++ b/src/pieces.rs @@ -17,11 +17,13 @@ const SELECT_SCALE : f64 = 1.1; impl Piece for SimpleShape { fn svg_piece(&self, pri : &PieceRenderInstructions) -> String { - format!(r##""##, + format!(r##""##, self.colours[pri.face], - pri.id_x("base"), - self.approx_dia / 2, - ) + pri.id_x("base")) + } + fn thresh_dragraise(&self, _pri : &PieceRenderInstructions) + -> Option { + Some(self.approx_dia / 2) } fn svg_select(&self, pri : &PieceRenderInstructions) -> String { format!(r##""##, diff --git a/templates/script.ts b/templates/script.ts index 44650f8e..f8b670da 100644 --- a/templates/script.ts +++ b/templates/script.ts @@ -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(); } -- 2.30.2