From: Ian Jackson Date: Sun, 4 Oct 2020 18:52:30 +0000 (+0100) Subject: make ZCoord member private X-Git-Tag: otter-0.2.0~758 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=a59e6bee554a42ccb9a0c7d968bdb59f5e394287;p=otter.git make ZCoord member private Signed-off-by: Ian Jackson --- diff --git a/src/cmdlistener.rs b/src/cmdlistener.rs index f26e3352..075a3054 100644 --- a/src/cmdlistener.rs +++ b/src/cmdlistener.rs @@ -66,7 +66,7 @@ fn execute(cs: &mut CommandStream, cmd: MgmtCommand) -> MgmtResponse { players : Default::default(), log : Default::default(), gen : Generation(0), - max_z: ZCoord(0.), + max_z: default(), }; let name = InstanceName { @@ -269,7 +269,7 @@ fn execute_game_insn(cs: &CommandStream, if p.nfaces() <= face.into() { throw!(SpecError::FaceNotFound); } - let z = ZCoord(gs.max_z.0 + (i + 1) as f64); + let z = gs.max_z.add(i + 1); let pc = PieceState { held: None, zlevel: ZLevel { z, zg: gs.gen }, diff --git a/src/gamestate.rs b/src/gamestate.rs index 51225dca..06ef7162 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -20,10 +20,10 @@ pub struct Generation (pub u64); visible_slotmap_key!{ VisiblePieceId('.') } #[derive(Debug,Copy,Clone,PartialEq,PartialOrd)] -#[derive(Serialize,Deserialize)] +#[derive(Serialize,Deserialize,Default)] #[serde(into="f64")] #[serde(try_from="f64")] -pub struct ZCoord(pub f64); +pub struct ZCoord(f64); #[derive(Clone,Serialize,Deserialize,Eq,Ord,PartialEq,PartialOrd)] #[serde(transparent)] @@ -178,6 +178,12 @@ impl Display for ZCoord { } } +impl ZCoord { + pub fn add(&self, v: u32) -> ZCoord { + ZCoord(self.0 + (v as f64)) + } +} + pub trait ClampTable : Sized { fn clamped(self, range: Self) -> (Self, bool); }