chiark / gitweb /
PieceMoveable: Put in updates
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 22:52:11 +0000 (22:52 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 22:52:11 +0000 (22:52 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs
src/gamestate.rs
src/pcrender.rs
src/updates.rs

index 30d94cb05cb0744813b68e4055765a2d7d8a5242..0cdc55215d63dde0dfb759cbf5b52ea4476afe01 100644 (file)
@@ -670,6 +670,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
           gen: gs.gen,
           pos, face,
           xdata: None,
+          moveable: default(),
         };
         let PieceSpecLoaded { p, occultable } =
           info.load(piece_i as usize, &mut gpc, &gref)?;
index d094dcbd840f6790d6ad838508f7f49fee935bb9..c5c861d8d9cd1fcc0e0ffa05c1d6aafd92483d26 100644 (file)
@@ -73,6 +73,7 @@ pub struct GPiece{  // usual variable: gpc
   pub lastclient: ClientId,
   pub gen_before_lastclient: Generation,
   pub xdata: PieceXDataState,
+  #[serde(default)] pub moveable: PieceMoveable,
 }
 
 pub type PieceXDataState = Option<Box<dyn PieceXData>>;
@@ -327,6 +328,7 @@ impl GPiece {
       lastclient: ClientId(default()),
       gen_before_lastclient: gen_dummy,
       xdata: None,
+      moveable: default(),
     }
   }
 }
index f93e7ade377cb4b2243ffcf9856198c75658b356..2d1ef7e0ba8d0c535ecd07d3aafbd3154a8e8cc6 100644 (file)
@@ -115,6 +115,8 @@ impl PieceRenderInstructions {
                          -> PreparedPieceState {
     let pri = self;
     let (pos, zlevel) = pri.pos_zlevel(gpc);
+    let moveable = if gpc.occult.is_active() { PieceMoveable::No }
+                   else { gpc.moveable };
     let r = PreparedPieceState {
       pos        : pos,
       held       : gpc.held,
@@ -124,6 +126,7 @@ impl PieceRenderInstructions {
       angle      : pri.angle(gpc).to_compass(),
       pinned     : gpc.pinned,
       uos        : pri.ui_operations(gs, gpc, ipc)?,
+      moveable,
     };
     dbgc!(pri, ipc, gpc, r);
     r
index 731498bf705ccee593c9457d256c7ed4374cd704..95f98057551830615db976b357b66f3bb04e27aa 100644 (file)
@@ -105,9 +105,19 @@ pub struct PreparedPieceState {
   pub zg: Generation,
   pub angle: CompassAngle,
   pub pinned: bool,
+  pub moveable: PieceMoveable,
   pub uos: Vec<UoDescription>,
 }
 
+#[derive(Debug,Copy,Clone,Serialize,Deserialize,Eq)]
+#[derive(Ord,PartialEq,PartialOrd)]
+pub enum PieceMoveable {
+  No,
+  IfWresting,
+  Yes,
+}
+impl Default for PieceMoveable { fn default() -> Self { PieceMoveable::Yes } }
+
 #[derive(Debug,Clone,Serialize)]
 pub struct PreparedPieceImage {
   pub svg: Html,