From: Ian Jackson Date: Sat, 20 Mar 2021 22:52:11 +0000 (+0000) Subject: PieceMoveable: Put in updates X-Git-Tag: otter-0.5.0~598 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=022f7b691df295d608fb3d673dababeb46f92d57;p=otter.git PieceMoveable: Put in updates Signed-off-by: Ian Jackson --- diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index 30d94cb0..0cdc5521 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -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)?; diff --git a/src/gamestate.rs b/src/gamestate.rs index d094dcbd..c5c861d8 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -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>; @@ -327,6 +328,7 @@ impl GPiece { lastclient: ClientId(default()), gen_before_lastclient: gen_dummy, xdata: None, + moveable: default(), } } } diff --git a/src/pcrender.rs b/src/pcrender.rs index f93e7ade..2d1ef7e0 100644 --- a/src/pcrender.rs +++ b/src/pcrender.rs @@ -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 diff --git a/src/updates.rs b/src/updates.rs index 731498bf..95f98057 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -105,9 +105,19 @@ pub struct PreparedPieceState { pub zg: Generation, pub angle: CompassAngle, pub pinned: bool, + pub moveable: PieceMoveable, pub uos: Vec, } +#[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,