From d43dd1526b4a4775d5a90e505b3a9fa266540399 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 24 Mar 2021 23:40:07 +0000 Subject: [PATCH] deck: When Enabled, stack neatly Signed-off-by: Ian Jackson --- src/deck.rs | 13 +++++++++---- src/hidden.rs | 4 ++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/deck.rs b/src/deck.rs index 0a57b7ab..7f1fc945 100644 --- a/src/deck.rs +++ b/src/deck.rs @@ -69,9 +69,10 @@ impl Deck { #[throws(IE)] fn state(&self, gpc: &GPiece, goccults: &GameOccults) -> State { match gpc.occult.active_views(&goccults)? { - None => Disabled, - Some(OccultationViews { defview: OccK::Visible,.. }) => Counting, - Some(OccultationViews { defview: OccK::Scrambled,.. }) => Enabled, + None => Disabled, + Some(OccultationViews { defview: OccK::Visible,.. }) => Counting, + Some(OccultationViews { defview: OccK::Scrambled /*old*/,.. }) | + Some(OccultationViews { defview: OccK::Displaced(..),.. }) => Enabled, x => throw!(internal_error_bydebug(&x)), } } @@ -187,7 +188,11 @@ impl PieceTrait for Deck { let new_view = match new_state { Disabled => None, Counting => Some(OccKG::Visible), - Enabled => Some(OccKG::Scrambled), + Enabled => { + let displace = OccDisplacement::Stack { pos: gpc.pos }; + let displace = (displace, gpc.zlevel.z.clone()); + Some(OccKG::Displaced(displace)) + }, }; let region_views = new_view.map(|new_view| { let region = self.shape.outline.region(gpc.pos)?; diff --git a/src/hidden.rs b/src/hidden.rs index 7e4bab72..77ba1f8d 100644 --- a/src/hidden.rs +++ b/src/hidden.rs @@ -74,6 +74,9 @@ pub type OccultationKind = OccultationKindGeneral<(OccDisplacement,ZCoord)>; #[derive(Clone,Debug,Serialize,Deserialize)] #[derive(Eq,PartialEq,Hash)] pub enum OccDisplacement { + Stack { + pos: Pos, + }, Rect { area: Area, }, @@ -268,6 +271,7 @@ impl OccDisplacement { fn place(&self, ppiece_use_size: Pos, notch: NotchNumber) -> Pos { use OccDisplacement as OD; match self { + OD::Stack{pos} => *pos, OD::Rect{area} => (|| Some({ let notch: Coord = notch.try_into().ok()?; let mut spare = ((area.0[1] - area.0[0]).ok()? -- 2.30.2