From 1ebdcf716775fc47f5fc7d12714454968e5dd9d0 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 27 Apr 2022 23:13:20 +0100 Subject: [PATCH] Break out op_do_set_z We're going to make multigrab do z setting too. Signed-off-by: Ian Jackson --- daemon/api.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/daemon/api.rs b/daemon/api.rs index be3ef8a6..4a6f0eb3 100644 --- a/daemon/api.rs +++ b/daemon/api.rs @@ -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); -- 2.30.2