From ad7c474dea942abc1bc7f429bd960f7c1da5c973 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 2 Apr 2021 23:35:29 +0100 Subject: [PATCH] hidden: Provide fully_visible_to Signed-off-by: Ian Jackson --- src/hidden.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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() -- 2.30.2