From 0fa627773ea5359565fa8ed104476b4b4bb7b39a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 26 Sep 2020 20:31:30 +0100 Subject: [PATCH] Break out get_pieces Signed-off-by: Ian Jackson --- src/bin/otter.rs | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/bin/otter.rs b/src/bin/otter.rs index 5dc40d85..7ec81b22 100644 --- a/src/bin/otter.rs +++ b/src/bin/otter.rs @@ -301,6 +301,18 @@ impl ConnForGame { } Ok((info, nick2id)) } + + #[throws(AE)] + fn get_pieces(&mut self) -> Vec { + let insns = vec![ MgmtGameInstruction::ListPieces ]; + let mut responses = self.alter_game(insns, None)?; + match responses.as_mut_slice() { + &mut [MgmtGameResponse::Pieces(ref mut pieces)] => { + return mem::take(pieces) + }, + wat => Err(anyhow!("ListPieces => {:?}", &wat))?, + } + } } #[throws(E)] @@ -525,18 +537,9 @@ mod reset_game { let mut insns = vec![]; - chan.alter_game( - vec![ MgmtGameInstruction::ListPieces ], - Some(&mut |response|{ match response { - MgmtGameResponse::Pieces(pieces) => { - for p in pieces { - insns.push(MgmtGameInstruction::DeletePiece(p.piece)); - } - Ok(()) - }, - wat => Err(anyhow!("ListPieces => {:?}", &wat))?, - }}) - )?; + for p in chan.get_pieces()? { + insns.push(MgmtGameInstruction::DeletePiece(p.piece)); + } if let Some(size) = game.table_size { insns.push(Insn::SetTableSize(size)); -- 2.30.2