From: Ian Jackson Date: Sun, 14 Mar 2021 19:51:10 +0000 (+0000) Subject: hidden: Do not report moves to players seeing a Displaced occultation X-Git-Tag: otter-0.4.0~59 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=7d8f9472d89cd275789ba28831d24f95d38e96c8;p=otter.git hidden: Do not report moves to players seeing a Displaced occultation Signed-off-by: Ian Jackson --- diff --git a/src/pcrender.rs b/src/pcrender.rs index 02e96ed0..08928c56 100644 --- a/src/pcrender.rs +++ b/src/pcrender.rs @@ -41,6 +41,19 @@ impl PieceRenderInstructions { op: PieceUpdateOp<(),()> ) -> Option> { + use PieceUpdateOp::*; + use PriOcculted::*; + if matches_doesnot!( + op, + = Move(_) | SetZLevel(_), + ! Delete() | Insert(_) | Modify(_) | ModifyQuiet(_), + ) { + match self.occulted { + Visible | Occulted => (), + Displaced(..) => return None, + } + } + let op = op.try_map( |()|{ let ns = self.prep_piecestate(ioccults, gpc, ipc)?; diff --git a/src/prelude.rs b/src/prelude.rs index bc6c8d5a..71722f7d 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -103,6 +103,7 @@ pub use crate::dbgc; pub use crate::{deref_to_field, deref_to_field_mut}; pub use crate::ensure_eq; pub use crate::from_instance_lock_error; +pub use crate::matches_doesnot; pub use crate::trace_dbg; pub use crate::accounts::loaded_acl::{self, EffectiveACL, LoadedAcl, PermSet};