chiark / gitweb /
fix z ?
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 11 Jul 2020 20:23:45 +0000 (21:23 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 11 Jul 2020 20:23:45 +0000 (21:23 +0100)
src/bin/server.rs
src/gamestate.rs
src/global.rs

index cccaa7ef8c5c473384d1f1beaa19e28ecba3fb15..f11026311fea918d5e00ac742513bfa9bd355e5c 100644 (file)
@@ -101,7 +101,7 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
 
     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<SessionForm>) -> Result<Template,OE> {
 
       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<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![])
   }
index fc4a2909101cb6eec86e2629c6755af55cffa705..29c85bdf3f4819f6e8f071b92d2444c78ebdc051 100644 (file)
@@ -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<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,
@@ -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),
     };
index 850a8516b4e76f51d1ba81a428c5f0c0c73be807..39c45871143e1fcdd6199eeb25d0466b4f69f964 100644 (file)
@@ -59,7 +59,7 @@ pub enum PieceUpdateOp<NS> {
   Insert(NS),
   Modify(NS),
   Move(Pos),
-  SetZLevel((ZCoord, Generation)),
+  SetZLevel(ZLevel),
 }
 impl<NS> PieceUpdateOp<NS> {
   pub fn new_state(&self) -> Option<&NS> {
@@ -90,10 +90,10 @@ impl<NS> PieceUpdateOp<NS> {
       Insert(_) => None,
       Modify(_) => None,
       Move(_) => None,
-      SetZLevel((_,zg)) => Some(*zg),
+      SetZLevel(ZLevel{zg,..}) => Some(*zg),
     }
   }
-}      
+}
 
 #[derive(Debug)]
 pub struct PlayerUpdates {