chiark / gitweb /
Break out op_do_set_z
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 27 Apr 2022 22:13:20 +0000 (23:13 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 30 Apr 2022 11:42:51 +0000 (12:42 +0100)
We're going to make multigrab do z setting too.

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

index be3ef8a601ced13e42b5e8a53fd1ed01b4fd4815..4a6f0eb343a97d4d9607245d21e3783728c6ed59 100644 (file)
@@ -457,16 +457,21 @@ api_route!{
   fn op(&self, a: ApiPieceOpArgs) -> PieceUpdate {
     let ApiPieceOpArgs { gs,piece, .. } = a;
     let gpc = gs.pieces.byid_mut(piece)?;
-    if gpc.occult.is_active() {
-      if self.z >= gpc.zlevel.z { throw!(Ia::Occultation) }
-    }
-    gpc.zlevel = ZLevel { z: self.z.clone(), zg: gs.gen };
+    op_do_set_z(gpc, gs.gen, &self.z)?;
     let update = PieceUpdateOp::SetZLevel(());
     (WhatResponseToClientOp::Predictable,
      update, vec![]).into()
   }
 }
 
+#[throws(ApiPieceOpError)]
+fn op_do_set_z(gpc: &mut GPiece, gen: Generation, z: &ZCoord) {
+    if gpc.occult.is_active() {
+      if z >= &gpc.zlevel.z { throw!(Ia::Occultation) }
+    }
+    gpc.zlevel = ZLevel { z: z.clone(), zg: gen };
+}
+
 api_route!{
   api_move, "/_/api/m",
   struct ApiPieceMove(Pos);