ig)
},
+ Insn::Synch => {
+ let (mut ig, _) = cs.check_acl(&ag, ig, PCH::Instance, &[TP::Play])?;
+ let mut buf = PrepareUpdatesBuffer::new(&mut ig, None, None);
+ let gen = buf.gen();
+ drop(buf); // does update
+ (U{ pcs: vec![], // we handled the update ourselves,
+ log: vec![], // return no update info
+ raw: None },
+ Resp::Synch(gen),
+ ig)
+ },
+
Insn::ListPieces => readonly(cs,ag,ig, &[TP::ViewPublic], |ig|{
let pieces = ig.gs.pieces.iter().map(|(piece,p)|{
let &PieceState { pos, face, .. } = p;
pub enum MgmtGameInstruction {
Noop,
Info,
+ Synch,
SetTableSize(Pos),
SetTableColour(ColourSpec),
pub enum MgmtGameResponse {
Fine,
Info(MgmtGameResponseGameInfo),
+ Synch(Generation),
Pieces(Vec<MgmtGamePieceInfo>),
let [alice, bob] : [Window; 2] =
su.setup_static_users()?.try_into().unwrap();
debug!("ok {:?} {:?}", alice, bob);
+
+// alice.synch()?;
+
sleep(750 * MS);
debug!("finishing");
}