chiark / gitweb /
hidden: Pass PlayerId to new APIs
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 31 Jan 2021 15:26:14 +0000 (15:26 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 31 Jan 2021 22:29:13 +0000 (22:29 +0000)
We want this for debug logging right now, but we'll surely want it for
actual processing when we implement all this.

NFC.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/api.rs
daemon/session.rs
src/hidden.rs
src/updates.rs

index f9a3407c80bbc33627032a0f8e0175e3f5f97e75..646d4097a4a39f95d480db188d8b0e3d13984c58 100644 (file)
@@ -87,11 +87,12 @@ impl<'r> Responder<'r> for OnlineErrorResponse {
 
 fn log_did_to_piece<L: Lens + ?Sized>(
   occults: &GameOccults,
+  player: PlayerId,
   gpl: &mut GPlayerState, _lens: &L,
   piece: PieceId, pc: &PieceState, p: &dyn Piece,
   did: &str,
 ) -> Vec<LogEntry> {
-  let pri = piece_pri(occults, gpl, piece, pc);
+  let pri = piece_pri(occults, player, gpl, piece, pc);
   vec![ LogEntry { html: Html(format!(
     "{} {} {}",
     &htmlescape::encode_minimal(&gpl.nick),
@@ -119,7 +120,8 @@ fn api_piece_op<O: ApiPieceOp>(form : Json<ApiPiece<O>>)
   let _ = iplayers.byid(player)?;
   let gpl = gs.players.byid(player)?;
   let lens = TransparentLens { };
-  let piece = vpiece_decode(gs, gpl, form.piece).ok_or(OE::PieceGone)?;
+  let piece = vpiece_decode(gs, player, gpl, form.piece)
+    .ok_or(OE::PieceGone)?;
   use ApiPieceOpError::*;
 
   match (||{
@@ -232,8 +234,10 @@ api_route!{
     pc.held = Some(player);
     
     let update = PieceUpdateOp::ModifyQuiet(());
-    let logents = log_did_to_piece(&gs.occults, gpl, lens, piece, pc, p,
-                                   "grasped");
+    let logents = log_did_to_piece(
+      &gs.occults, player, gpl, lens, piece, pc, p,
+      "grasped"
+    );
 
     (WhatResponseToClientOp::Predictable,
      update, logents).into()
@@ -257,7 +261,7 @@ api_route!{
     let was = was.map(|was| htmlescape::encode_minimal(&was.nick));
 
     let gpl = players.byid_mut(player)?;
-    let pri = piece_pri(&gs.occults, gpl, piece, pc);
+    let pri = piece_pri(&gs.occults, player, gpl, piece, pc);
     let pcs = p.describe_pri(&pri).0;
 
     pc.held = Some(player);
@@ -290,8 +294,10 @@ api_route!{
     pc.held = None;
 
     let update = PieceUpdateOp::Modify(());
-    let logents = log_did_to_piece(&gs.occults, gpl, lens, piece, pc, p,
-                                   "released");
+    let logents = log_did_to_piece(
+      &gs.occults, player, gpl, lens, piece, pc, p,
+      "released"
+    );
 
     (WhatResponseToClientOp::Predictable,
      update, logents).into()
@@ -347,8 +353,10 @@ api_route!{
     let pc = gs.pieces.byid_mut(piece).unwrap();
     let gpl = gs.players.byid_mut(player).unwrap();
     pc.angle = PieceAngle::Compass(self.0);
-    let logents = log_did_to_piece(&gs.occults, gpl, lens, piece, pc, p,
-                                   "rotated");
+    let logents = log_did_to_piece(
+      &gs.occults, player, gpl, lens, piece, pc, p,
+      "rotated"
+    );
     let update = PieceUpdateOp::Modify(());
     (WhatResponseToClientOp::Predictable,
      update, logents).into()
@@ -367,7 +375,7 @@ api_route!{
     pc.pinned = self.0;
     let update = PieceUpdateOp::Modify(());
     let logents = log_did_to_piece(
-      &gs.occults, gpl, lens, piece, pc, p,
+      &gs.occults, player, gpl, lens, piece, pc, p,
       if pc.pinned { "pinned" } else { "unpinned" },
     );
     (WhatResponseToClientOp::Predictable,
@@ -397,8 +405,10 @@ api_route!{
           return (
             wrc,
             PieceUpdateOp::Modify(()),
-            log_did_to_piece(&gs.occults, gpl, lens, piece, pc, p,
-                             "flipped"),
+            log_did_to_piece(
+              &gs.occults, player, gpl, lens, piece, pc, p,
+              "flipped"
+            ),
           ).into()
         },
 
index 05c8dc318cf1c0b04109d39cba091fab005dc731..ec31a2389b962ac23817c05e9cb9c08552506dfa 100644 (file)
@@ -108,7 +108,7 @@ fn session_inner(form : Json<SessionForm>,
     pieces.sort_by_key(|(_,pr)| &pr.zlevel);
 
     for (gpid, pr) in pieces {
-      let pri = piece_pri(&ig.gs.occults, gpl, gpid, pr);
+      let pri = piece_pri(&ig.gs.occults, player, gpl, gpid, pr);
       let p = if let Some(p) = ig.ipieces.get(gpid) { p }
       else { continue /* was deleted */ };
       let defs = p.make_defs(&pri)?;
index 479d02f70e33d88b8daf6d2efb4b88fc1cd35d37..e66f94b2e56f8c68961f8ab3f41f8a4f1f00069b 100644 (file)
@@ -57,6 +57,7 @@ pub struct GameOccults {
 
 pub fn piece_pri(
   _occults: &GameOccults, // xxx
+  _player: PlayerId,
   gpl: &mut GPlayerState,
   piece: PieceId,
   pc: &PieceState,
@@ -68,6 +69,7 @@ pub fn piece_pri(
 
 pub fn vpiece_decode(
   _gs: &GameState, // xxx
+  _player: PlayerId,
   gpl: &GPlayerState,
   vis: VisiblePieceId
 ) -> Option<PieceId> {
index 11f2b04e2d6ffb4f15363c53a9491ac877712942..95b6e5679718eb13c1c9d98f31551540a103c960 100644 (file)
@@ -509,7 +509,7 @@ impl<'r> PrepareUpdatesBuffer<'r> {
       };
       let op = match (&mut pc, p) {
         (Some(pc), Some(p)) => {
-          let pri = piece_pri(&gs.occults, gpl, piece, *pc);
+          let pri = piece_pri(&gs.occults, player, gpl, piece, *pc);
           Self::piece_update_player(
             &mut gs.max_z, pc, p, ops, &pri, lens
           )?