self.su().ds.otter_prctx(&self.prctx, &args)?
}
+ #[throws(Explode)]
+ fn place_library_load_markers(&mut self) -> Session {
+ let mut session = self.connect_player(&self.alice)?;
+ let pieces = session.pieces::<PIA>()?;
+ let llm = pieces.into_iter()
+ .filter(|pi| pi.info["desc"] == "a library load area marker")
+ .collect::<ArrayVec<_>>();
+ let llm: [_;2] = llm.into_inner().unwrap();
+ dbgc!(&llm);
+
+ for (llm, &pos) in izip!(&llm, [PosC::new(5,5), PosC::new(50,25)].iter())
+ {
+ session.api_piece(GH::With, &llm.id, pos)?;
+ }
+
+ session.synch()?;
+ session
+ }
+
#[throws(Explode)]
fn library_load(&mut self) {
prepare_game(&self.su().ds, &self.prctx, TABLE)?;
assert_eq!(add_err.downcast::<ExitStatusError>()?.0.code(),
Some(EXIT_NOTFOUND));
- let mut session = self.connect_player(&self.alice)?;
- let pieces = session.pieces::<PIA>()?;
- let llm = pieces.into_iter()
- .filter(|pi| pi.info["desc"] == "a library load area marker")
- .collect::<ArrayVec<_>>();
- let llm: [_;2] = llm.into_inner().unwrap();
- dbgc!(&llm);
-
- for (llm, &pos) in izip!(&llm, [PosC::new(5,5), PosC::new(50,25)].iter())
- {
- session.api_piece(GH::With, &llm.id, pos)?;
- }
-
- session.synch()?;
+ let mut session = self.place_library_load_markers()?;
self.otter(&command)
.expect("library-add failed after place!");