From: Ian Jackson Date: Fri, 2 Apr 2021 22:35:29 +0000 (+0100) Subject: hidden: Provide fully_visible_to X-Git-Tag: otter-0.5.0~283 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=ad7c474dea942abc1bc7f429bd960f7c1da5c973;p=otter.git hidden: Provide fully_visible_to Signed-off-by: Ian Jackson --- diff --git a/src/hidden.rs b/src/hidden.rs index d2b839e8..cf709cd7 100644 --- a/src/hidden.rs +++ b/src/hidden.rs @@ -402,6 +402,22 @@ impl GPiece { } } + pub fn fully_visible_to(&self, goccults: &GameOccults, player: PlayerId) + -> Option + { + const HIDE: Option = None; + const SHOW: Option = Some(ShowUnocculted(())); + if_let!{ Some(passive) = &self.occult.passive; else return SHOW }; + want_let!{ Some(occ) = goccults.occults.get(passive.occid); + else ?passive.occid; return HIDE }; + return match occ.views.get_kind(player) { + OccK::Visible => SHOW, + OccK::Scrambled | + OccK::Displaced(_) | + OccK::Invisible => HIDE, + } + } + pub fn involved_in_occultation(&self) -> bool { self.occult.passive.is_some() || self.occult.active.is_some()