From 085da462b50b91970297e87fbeb7adea3c3488fd Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 12 Mar 2021 00:52:37 +0000 Subject: [PATCH] hidden: Pos: handle in prep_piecestate There are still a few places we don't do this right. Signed-off-by: Ian Jackson --- src/gamestate.rs | 13 +++++++++---- src/hidden.rs | 7 ------- src/updates.rs | 3 +-- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/gamestate.rs b/src/gamestate.rs index fc69153b..75f55762 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -303,13 +303,18 @@ impl GPiece { #[throws(IE)] pub fn prep_piecestate(&self, ioccults: &IOccults, ipc: &IPiece, pri: &PieceRenderInstructions) - -> PreparedPieceState { + -> PreparedPieceState { + use PriOcculted as PO; + let (pos, zlevel) = match &pri.occulted { + PO::Visible | PO::Occulted => (self.pos, self.zlevel.clone()), + PO::Displaced(pos, zlevel) => (*pos, zlevel.clone()), + }; PreparedPieceState { - pos : self.pos, + pos : pos, held : self.held, svg : pri.make_defs(ioccults, self, ipc)?, - z : self.zlevel.z.clone(), - zg : self.zlevel.zg, + z : zlevel.z, + zg : zlevel.zg, angle : pri.angle(self).to_compass(), pinned : self.pinned, uos : pri.ui_operations(self, ipc.p.borrow())?, diff --git a/src/hidden.rs b/src/hidden.rs index 39f33e21..af56dee6 100644 --- a/src/hidden.rs +++ b/src/hidden.rs @@ -567,13 +567,6 @@ pub fn vpiece_decode( piece } -pub fn massage_prep_piecestate( - _pri: &PieceRenderInstructions, // xxx - _ns: &mut PreparedPieceState, // xxx -) { - // xxx hidden position involves adjusting pos and z and ??? here -} - // xxx prevent addpiece and removepiece in places that would be occulted // xxx this means this only happens on ungrab I think ? // xxx prevent occultation scrambling of grasped things diff --git a/src/updates.rs b/src/updates.rs index cfda540b..ca7f9ece 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -507,8 +507,7 @@ impl<'r> PrepareUpdatesBuffer<'r> { let op = op.try_map( |()|{ - let mut ns = pc.prep_piecestate(ioccults, ipc, pri)?; - massage_prep_piecestate(pri, &mut ns); + let ns = pc.prep_piecestate(ioccults, ipc, pri)?; >::Ok(ns) }, |()|{ -- 2.30.2