From c375d8a25f0af8e34f3dc27509537adf8e7cf8b8 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 4 Apr 2021 16:19:06 +0100 Subject: [PATCH] cmdlistener: pieceid lookup commands Signed-off-by: Ian Jackson --- daemon/cmdlistener.rs | 19 +++++++++++++++++++ src/commands.rs | 12 ++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index 14aecf75..d40fb4ab 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -426,6 +426,25 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( None, ig) }, + MGI::PieceIdLookupFwd { player, piece } => { + let superuser = cs.superuser.ok_or(ME::SuperuserAuthorisationRequired)?; + let ig = ig.by_mut(superuser.into()); + let gpl = ig.gs.players.byid(player)?; + let vpid = gpl.idmap.fwd(piece); + (U{ pcs: vec![], log: vec![], raw: None }, + MGR::VisiblePieceId(vpid), + None, ig) + }, + MGI::PieceIdLookupRev { player, vpid } => { + let superuser = cs.superuser.ok_or(ME::SuperuserAuthorisationRequired)?; + let ig = ig.by_mut(superuser.into()); + let gpl = ig.gs.players.byid(player)?; + let piece = gpl.idmap.rev(vpid); + (U{ pcs: vec![], log: vec![], raw: None }, + MGR::InternalPieceId(piece), + None, ig) + }, + MGI::ListPieces => readonly(cs,ag,ig, &[TP::ViewNotSecret], |ig|{ let ioccults = &ig.ioccults; let pieces = ig.gs.pieces.iter().filter_map( diff --git a/src/commands.rs b/src/commands.rs index 8af875d9..36acc155 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -78,11 +78,16 @@ pub enum MgmtResponse { pub enum MgmtGameInstruction { Noop, Info, - /// For testing, mostly. - Synch, SetTableSize(Pos), SetTableColour(ColourSpec), + /// For testing, mostly. + Synch, + /// For testing only + PieceIdLookupFwd { piece: PieceId, player: PlayerId, }, + /// For testing only + PieceIdLookupRev { vpid: VisiblePieceId, player: PlayerId, }, + ListPieces, AddPieces(PiecesSpec), DeletePiece(PieceId), @@ -116,6 +121,9 @@ pub enum MgmtGameResponse { Info(MgmtGameResponseGameInfo), Synch(Generation), + InternalPieceId(Option), + VisiblePieceId(Option), + Pieces { pieces: Vec, pcaliases: BTreeSet, -- 2.30.2