chiark / gitweb /
api: grab: Reformat to allow us to override bits of Core
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 5 Apr 2021 11:46:23 +0000 (12:46 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 5 Apr 2021 11:48:57 +0000 (12:48 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/api.rs

index dc0b236c4cc2f11a7624733414a62c7e2ac9ae3f..afa09dde717bbd3b97bbd6e0f7b85e86657b1f35 100644 (file)
@@ -274,25 +274,29 @@ api_route!{
   struct ApiPieceGrab {
   }
 
-  as:
-  #[throws(ApiPieceOpError)]
-  fn op(&self, a: ApiPieceOpArgs) -> PieceUpdate {
-    let ApiPieceOpArgs { gs,ioccults,player,piece,ipc, .. } = a;
-    let gpl = gs.players.byid_mut(player)?;
-    let gpc = gs.pieces.byid_mut(piece)?;
+  impl op::Core as {
+  }
 
-    let logents = log_did_to_piece(
-      ioccults,&gs.occults, gpl,gpc,ipc,
-      "grasped"
-    )?;
+  impl op::Simple as {
+    #[throws(ApiPieceOpError)]
+    fn op(&self, a: ApiPieceOpArgs) -> PieceUpdate {
+      let ApiPieceOpArgs { gs,ioccults,player,piece,ipc, .. } = a;
+      let gpl = gs.players.byid_mut(player)?;
+      let gpc = gs.pieces.byid_mut(piece)?;
 
-    if gpc.held.is_some() { throw!(OnlineError::PieceHeld) }
-    gpc.held = Some(player);
+      let logents = log_did_to_piece(
+        ioccults,&gs.occults, gpl,gpc,ipc,
+        "grasped"
+      )?;
+
+      if gpc.held.is_some() { throw!(OnlineError::PieceHeld) }
+      gpc.held = Some(player);
     
-    let update = PieceUpdateOp::ModifyQuiet(());
+      let update = PieceUpdateOp::ModifyQuiet(());
 
-    (WhatResponseToClientOp::Predictable,
-     update, logents).into()
+      (WhatResponseToClientOp::Predictable,
+       update, logents).into()
+    }
   }
 }