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 {
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 {
_: &dyn Lens)
-> (PieceUpdateOp<()>, Vec<LogEntry>) {
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![])
}
}
}
+#[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<dyn Piece>,
pub face : FaceId,
pub held : Option<PlayerId>,
- pub zlevel : (ZCoord,Generation),
+ pub zlevel : ZLevel,
pub gen : Generation,
pub lastclient : ClientId,
pub gen_before_lastclient : Generation,
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,
}
}
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),
};
Insert(NS),
Modify(NS),
Move(Pos),
- SetZLevel((ZCoord, Generation)),
+ SetZLevel(ZLevel),
}
impl<NS> PieceUpdateOp<NS> {
pub fn new_state(&self) -> Option<&NS> {
Insert(_) => None,
Modify(_) => None,
Move(_) => None,
- SetZLevel((_,zg)) => Some(*zg),
+ SetZLevel(ZLevel{zg,..}) => Some(*zg),
}
}
-}
+}
#[derive(Debug)]
pub struct PlayerUpdates {