chiark / gitweb /
hidden prep: Allow api updates to be per-player
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 30 Jan 2021 22:08:59 +0000 (22:08 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 31 Jan 2021 18:38:28 +0000 (18:38 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/updates.rs

index 97f42702b2a29880cbd2910dca4271deeb067c6d..c7efbc1ba8e02244110773a67935f4fb38f67443 100644 (file)
@@ -119,9 +119,10 @@ pub struct PieceUpdate {
   pub ops: PieceUpdateOps,
 }
 
-#[derive(Debug,Copy,Clone)]
+#[derive(Debug,Clone)]
 pub enum PieceUpdateOps {
   Simple(PieceUpdateOp<(),()>),
+  PerPlayer(DenseSlotMap<PlayerId, PieceUpdateOp<(),()>>),
 }
 
 impl From<PieceUpdateOp<(),()>> for PieceUpdateOps {
@@ -503,6 +504,10 @@ impl<'r> PrepareUpdatesBuffer<'r> {
     for player in gs.players.keys() {
       let ops = match ops {
         PUO::Simple(update) => update,
+        PUO::PerPlayer(ref ops) => match ops.get(player) {
+          Some(op) => *op,
+          None => continue,
+        }
       };
       let op = match (&mut pc, p) {
         (Some(pc), Some(p)) => Self::piece_update_player(