From: Ian Jackson Date: Thu, 11 Mar 2021 10:34:46 +0000 (+0000) Subject: occult ilks: Change type of IPiece, no functional change yet X-Git-Tag: otter-0.4.0~192 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=e8419445953b64e210c64b5938013c7c56a43be1;p=otter.git occult ilks: Change type of IPiece, no functional change yet Signed-off-by: Ian Jackson --- diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index e7dac3dd..cf1a88d9 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -559,7 +559,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( MGI::DeletePiece(piece) => { let (ig, modperm, _) = cs.check_acl_modify_pieces(ag, ig)?; - let p = ig.ipieces.as_mut(modperm) + let IPiece { p } = ig.ipieces.as_mut(modperm) .remove(piece).ok_or(ME::PieceNotFound)?; let gs = &mut ig.gs; let gpc = gs.pieces.as_mut(modperm).remove(piece); @@ -627,7 +627,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( pc.pos.clamped(gs.table_size).map_err(|_| SpecError::PosOffTable)?; if pc.zlevel.z > gs.max_z { gs.max_z = pc.zlevel.z.clone() } let piece = gs.pieces.as_mut(modperm).insert(pc); - ig.ipieces.as_mut(modperm).insert(piece, p); + ig.ipieces.as_mut(modperm).insert(piece, IPiece { p }); updates.push((piece, PieceUpdateOp::Insert(()))); pos = (pos + posd)?; } diff --git a/src/global.rs b/src/global.rs index 764f72a2..b2fe85d9 100644 --- a/src/global.rs +++ b/src/global.rs @@ -68,10 +68,16 @@ pub struct IPlayer { // usual variable: ipl pub tz: Timezone, } +#[derive(Debug,Serialize,Deserialize)] +pub struct IPiece { + #[serde(flatten)] + pub p: Box, +} + #[derive(Debug,Serialize,Deserialize)] #[serde(transparent)] pub struct IPieces(ActualIPieces); -pub type ActualIPieces = SecondarySlotMap>; +pub type ActualIPieces = SecondarySlotMap; #[derive(Copy,Clone,Debug)] pub struct ModifyingPieces(()); @@ -1253,6 +1259,10 @@ pub fn process_all_players_for_account< impl IPieces { pub fn get(&self, piece: PieceId) -> Option<&Box> { + Some(&self.0.get(piece)?.p) + } + + pub fn get_ipc(&self, piece: PieceId) -> Option<&IPiece> { self.0.get(piece) }