chiark / gitweb /
PieceRenderInstructions: Rename vpid and provide new_visible
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Feb 2021 13:32:15 +0000 (13:32 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Feb 2021 13:39:58 +0000 (13:39 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs
daemon/session.rs
src/gamestate.rs
src/hidden.rs
src/updates.rs

index 55009d03263ca2356f99e88b4ecff1b34570aeb6..439ab6cf0324e29f1356e507f7e8047d23ba0931 100644 (file)
@@ -381,10 +381,10 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
           if let Some(pinfo) = ig.ipieces.get(piece);
           let visible = if ! piece_at_all_occluded(&ig.gs.occults, piece) {
             // todo: something more sophisticated would be nice
-            let pri = PieceRenderInstructions {
-              id: VisiblePieceId(piece.data()),
-              occluded: PriOccluded::Visible,
-            };
+            let pri = PieceRenderInstructions::new_visible(
+              // visible id is internal one here
+              VisiblePieceId(piece.data())
+            );
             let bbox = pinfo.bbox_approx()?;
             let desc_html = pri.describe(p, pinfo);
             Some(MgmtGamePieceVisibleInfo {
@@ -564,10 +564,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
       let gs = &mut ig.gs;
       let pc = gs.pieces.as_mut(modperm).remove(piece);
       let desc_html = if let Some(pc) = &pc {
-        let pri = PieceRenderInstructions {
-          id: default(),
-          occluded: PriOccluded::Visible,
-        };
+        let pri = PieceRenderInstructions::new_visible(default());
         pri.describe(pc, &p)
       } else {
         Html::lit("<piece partially missing from game state!>")
index de75eed0c5153aa3ebb69324d2518f8c05dfac47..f4e00d7337f829d1d768d969b546896764241b17 100644 (file)
@@ -115,7 +115,7 @@ fn session_inner(form: Json<SessionForm>,
       let p = if let Some(p) = ig.ipieces.get(gpid) { p }
       else { continue /* was deleted */ };
       let defs = pri.make_defs(pr, p)?;
-      alldefs.push((pri.id, defs));
+      alldefs.push((pri.vpid, defs));
       let desc = pri.describe(&pr, p);
 
       let vangle = pri.angle(pr).to_compass();
@@ -131,7 +131,7 @@ fn session_inner(form: Json<SessionForm>,
       };
 
       let for_piece = SessionPieceContext {
-        id: pri.id,
+        id: pri.vpid,
         pos: pr.pos,
         info: serde_json::to_string(&for_info)
           .map_err(|e| InternalError::JSONEncode(e))?,
index 5d03737dffc0514c686d8f5b78a1e0408c30316d..c173d79e96acc704774139d4c4f7388f378eb833 100644 (file)
@@ -355,7 +355,7 @@ impl PieceXDataExt for PieceXDataState {
 
 #[derive(Debug,Clone)]
 pub struct PieceRenderInstructions {
-  pub id: VisiblePieceId,
+  pub vpid: VisiblePieceId,
   pub occluded: PriOccluded,
 }
 
@@ -363,6 +363,10 @@ pub struct PieceRenderInstructions {
 pub enum PriOccluded { Visible /*, Occluded*/ }
 
 impl PieceRenderInstructions {
+  pub fn new_visible(vpid: VisiblePieceId) -> PieceRenderInstructions {
+    PieceRenderInstructions { vpid, occluded: PriOccluded::Visible }
+  }
+
   #[throws(IE)]
   pub fn make_defs<'p,P>(&self, gpc: &GPiece, p: &P) -> Html
     where P:Borrow<dyn PieceTrait + 'p>
@@ -382,12 +386,12 @@ impl PieceRenderInstructions {
     let transform = gpc.angle.to_transform();
     write!(&mut defs.0,
            r##"<g id="piece{}" transform="{}" data-dragraise="{}">"##,
-           pri.id, &transform.0, dragraise)?;
-    p.svg_piece(&mut defs, gpc, pri.id)?;
+           pri.vpid, &transform.0, dragraise)?;
+    p.svg_piece(&mut defs, gpc, pri.vpid)?;
     write!(&mut defs.0, r##"</g>"##)?;
     write!(&mut defs.0,
            r##"<path id="surround{}" d="{}"/>"##,
-           pri.id, p.surround_path()?.0)?;
+           pri.vpid, p.surround_path()?.0)?;
     defs
   }
   inner(self, gpc, p.borrow())?
index 0930c60c5a42122167672cf49874dd17446aa7da..c733edd39e122cf102e23c05715bc52719fce7d8 100644 (file)
@@ -180,12 +180,12 @@ pub fn piece_pri(
   piece: PieceId,
   pc: &GPiece,
 ) -> PieceRenderInstructions {
-  let vpiece = gpl.idmap.fwd_or_insert(piece);
+  let vpid = gpl.idmap.fwd_or_insert(piece);
   let angle = pc.angle;
   let occluded = PriOccluded::Visible; // xxx
   trace!("{} {:?} => {} angle={:?}",
-         player, piece, vpiece, angle);
-  PieceRenderInstructions { id: vpiece, occluded }
+         player, piece, vpid, angle);
+  PieceRenderInstructions { vpid, occluded }
 }
 
 pub fn piece_at_all_occluded(
index c68ca80e6838a8320f4c8b0951ad0e3fc0e475e5..d6d6da2815e3cf293fce98570767d07eadb45d55 100644 (file)
@@ -508,7 +508,7 @@ impl<'r> PrepareUpdatesBuffer<'r> {
     )?;
 
     PreparedPieceUpdate {
-      piece: pri.id,
+      piece: pri.vpid,
       op,
     }
   }