From: Ian Jackson Date: Fri, 31 Jul 2020 23:26:39 +0000 (+0100) Subject: reset player accesses X-Git-Tag: otter-0.2.0~1206 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=27d80c04d6c559afa7b6b398c58f64b255b49e37;p=otter.git reset player accesses --- diff --git a/src/cmdlistener.rs b/src/cmdlistener.rs index 629c5ce2..736c9bb8 100644 --- a/src/cmdlistener.rs +++ b/src/cmdlistener.rs @@ -264,7 +264,6 @@ fn execute(cs: &mut CommandStream, cmd: MgmtCommand) -> MgmtResponse { let mut g = gref.lock()?; execute_for_game(cs, &mut g, insns, how)? }, - } } @@ -394,6 +393,12 @@ fn execute_game_insn(ig: &mut InstanceGuard, update: MgmtGameInstruction) (vec![], vec![], Fine{}) }, + + ResetPlayerAccesses { players } => { + let tokens = ig.players_access_reset(&players)?; + (vec![], vec![], PlayerAccessTokens { tokens }) + } + AddPiece(PiecesSpec{ pos,posd,count,face,info }) => { let gs = &mut ig.gs; let count = count.unwrap_or(1); diff --git a/src/commands.rs b/src/commands.rs index e0887026..7ee9b17e 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -20,6 +20,7 @@ pub enum MgmtGameInstruction { // todo: RemovePiece AddPlayer(PlayerState), RemovePlayer(PlayerId), + ResetPlayerAccesses { players: Vec }, } #[derive(Debug,Serialize,Deserialize)] @@ -34,6 +35,7 @@ pub enum MgmtResponse { pub enum MgmtGameResult { Fine { }, AddPlayer { player: PlayerId }, + PlayerAccessTokens { tokens: Vec }, } #[derive(Debug,Serialize,Deserialize)] diff --git a/src/global.rs b/src/global.rs index 79944ddc..bd4eb50f 100644 --- a/src/global.rs +++ b/src/global.rs @@ -429,7 +429,7 @@ impl InstanceGuard<'_> { } #[throws(MgmtError)] - pub fn player_access_reset(&mut self, players: &[PlayerId]) + pub fn players_access_reset(&mut self, players: &[PlayerId]) -> Vec { // tokens can't persist unless game is never destroyed ? // so a game is like a tables, and persistent