From 51971330213606ae885865850bad14a18f640982 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 6 Jul 2020 18:12:00 +0100 Subject: [PATCH] code motion --- src/bin/server.rs | 50 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index 53494a2e..be3d98ca 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -122,9 +122,6 @@ struct ApiPiece { #[serde(flatten)] op : O, } -#[derive(Debug,Serialize,Deserialize)] -struct ApiPieceGrab { -} trait ApiPieceOp : Debug { #[throws(GameError)] fn op(&self, gs: &mut GameState, player: PlayerId, piece: PieceId, @@ -159,29 +156,6 @@ impl Lens for TransparentLens { } } -impl ApiPieceOp for ApiPieceGrab { - #[throws(GameError)] - fn op(&self, gs: &mut GameState, player: PlayerId, piece: PieceId, - lens: &dyn Lens) - -> (PieceUpdateOp<()>, Vec) { - let pl = gs.players.byid(player).unwrap(); - let pc = gs.pieces.byid_mut(piece).unwrap(); - - if pc.held.is_some() { Err(GameError::PieceHeld)? } - pc.held = Some(player); - - let update = PieceUpdateOp::Modify(()); - - let logent = LogEntry { - html : format!("{} grasped {}", - &htmlescape::encode_minimal(&pl.nick), - pc.describe_html(&lens.log_pri(piece, pc))), - }; - - (update, vec![logent]) - } -} - #[throws(OE)] fn api_piece_op(form : Json>) -> impl response::Responder<'static> { @@ -261,13 +235,37 @@ fn api_piece_op(form : Json>) "" } +#[derive(Debug,Serialize,Deserialize)] +struct ApiPieceGrab { +} #[post("/_/api/grab", format="json", data="
")] #[throws(OE)] fn api_grab(form : Json>) -> impl response::Responder<'static> { api_piece_op(form) } +impl ApiPieceOp for ApiPieceGrab { + #[throws(GameError)] + fn op(&self, gs: &mut GameState, player: PlayerId, piece: PieceId, + lens: &dyn Lens) + -> (PieceUpdateOp<()>, Vec) { + let pl = gs.players.byid(player).unwrap(); + let pc = gs.pieces.byid_mut(piece).unwrap(); + if pc.held.is_some() { Err(GameError::PieceHeld)? } + pc.held = Some(player); + + let update = PieceUpdateOp::Modify(()); + + let logent = LogEntry { + html : format!("{} grasped {}", + &htmlescape::encode_minimal(&pl.nick), + pc.describe_html(&lens.log_pri(piece, pc))), + }; + + (update, vec![logent]) + } +} #[derive(Debug,Serialize,Deserialize)] struct ApiUngrab { t : String, -- 2.30.2