From: Ian Jackson Date: Sat, 11 Jul 2020 20:23:45 +0000 (+0100) Subject: fix z ? X-Git-Tag: otter-0.2.0~1390 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=23f043c16673edc1a2d15c0a834cfa0ddff7636f;p=otter.git fix z ? --- diff --git a/src/bin/server.rs b/src/bin/server.rs index cccaa7ef..f1102631 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -101,7 +101,7 @@ fn session(form : Json) -> Result { let mut pieces : Vec<_> = ig.gs.pieces.iter().collect(); - pieces.sort_by_key(|(_,pr)| pr.zlevel); + pieces.sort_by_key(|(_,pr)| &pr.zlevel); for (gpid, pr) in pieces { let pri = PieceRenderInstructions { @@ -113,8 +113,8 @@ fn session(form : Json) -> Result { let for_info = SessionPieceLoadJson { gplayer : &pr.held, - z : pr.zlevel.0, - zg : pr.zlevel.1, + z : pr.zlevel.z, + zg : pr.zlevel.zg, }; let for_piece = SessionPieceContext { @@ -349,7 +349,7 @@ impl ApiPieceOp for ApiPieceRaise { _: &dyn Lens) -> (PieceUpdateOp<()>, Vec) { let pc = gs.pieces.byid_mut(piece).unwrap(); - pc.zlevel = (self.z, gs.gen); + pc.zlevel = ZLevel { z : self.z, zg : gs.gen }; let update = PieceUpdateOp::SetZLevel(pc.zlevel); (update, vec![]) } diff --git a/src/gamestate.rs b/src/gamestate.rs index fc4a2909..29c85bdf 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -80,13 +80,19 @@ impl Display for ZCoord { } } +#[derive(Debug,Copy,Clone,Serialize,Deserialize,Eq,PartialEq,Ord,PartialOrd)] +pub struct ZLevel { + pub z: ZCoord, + pub zg: Generation, +} + #[derive(Debug)] pub struct PieceRecord { pub pos : Pos, pub p : Box, pub face : FaceId, pub held : Option, - pub zlevel : (ZCoord,Generation), + pub zlevel : ZLevel, pub gen : Generation, pub lastclient : ClientId, pub gen_before_lastclient : Generation, @@ -127,8 +133,8 @@ impl PieceRecord { pos : self.pos, held : self.held, svg : self.make_defs(pri), - z : self.zlevel.0, - zg : self.zlevel.1, + z : self.zlevel.z, + zg : self.zlevel.zg, } } @@ -164,7 +170,7 @@ pub fn xxx_gamestate_init() -> GameState { face : 0.into(), held : None, lastclient : Default::default(), - zlevel : (0f64 .try_into().unwrap(), Generation(0)), + zlevel : ZLevel{ z: 0f64 .try_into().unwrap(), zg: Generation(0) }, gen, gen_before_lastclient : Generation(0), }; diff --git a/src/global.rs b/src/global.rs index 850a8516..39c45871 100644 --- a/src/global.rs +++ b/src/global.rs @@ -59,7 +59,7 @@ pub enum PieceUpdateOp { Insert(NS), Modify(NS), Move(Pos), - SetZLevel((ZCoord, Generation)), + SetZLevel(ZLevel), } impl PieceUpdateOp { pub fn new_state(&self) -> Option<&NS> { @@ -90,10 +90,10 @@ impl PieceUpdateOp { Insert(_) => None, Modify(_) => None, Move(_) => None, - SetZLevel((_,zg)) => Some(*zg), + SetZLevel(ZLevel{zg,..}) => Some(*zg), } } -} +} #[derive(Debug)] pub struct PlayerUpdates {