chiark / gitweb /
record raised
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 8 Jul 2020 01:20:22 +0000 (02:20 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 8 Jul 2020 01:20:22 +0000 (02:20 +0100)
src/bin/server.rs
src/gamestate.rs

index 332b5a74afe5930e23b09fb86168cd0cc3356be7..d6d47d4cc58fd7131e6138bccdae6964f3ac931e 100644 (file)
@@ -84,7 +84,12 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
 
     let mut uses = vec![];
     let mut alldefs = vec![];
-    for (gpid, pr) in &ig.gs.pieces {
+
+    let mut pieces : Vec<_> = ig.gs.pieces.iter().collect();
+
+    pieces.sort_by_key(|(_,pr)| !pr.raised.0);
+
+    for (gpid, pr) in pieces {
       let pri = PieceRenderInstructions {
         id : make_pieceid_visible(gpid),
         face : pr.face,
index 20d3decfa39bfa1a9ae13b5177a3d081997f3bd1..5a672dab388ab213d7157539a935f0aebec55b0b 100644 (file)
@@ -53,6 +53,7 @@ pub struct PieceRecord {
   pub p : Box<dyn Piece>,
   pub face : FaceId,
   pub held : Option<PlayerId>,
+  pub raised : Generation,
   pub gen : Generation,
   pub lastclient : ClientId,
   pub gen_before_lastclient : Generation,
@@ -119,17 +120,20 @@ pub struct LogEntry {
 
 pub fn xxx_gamestate_init() -> GameState {
   let mut pieces = DenseSlotMap::with_key();
+  let mut gen = Generation(0);
   for (pos, p) in xxx_make_pieces() {
     let pr = PieceRecord {
       pos, p,
       face : 0.into(),
       held : None,
       lastclient : Default::default(),
-      gen : Generation(0),
+      raised: Generation(0),
+      gen,
       gen_before_lastclient : Generation(0),
     };
+    gen.increment();
     pieces.insert(pr);
   }
-  GameState { pieces, gen : Generation(1), players : Default::default(),
+  GameState { pieces, gen, players : Default::default(),
               log : Default::default(), }
 }