From: Ian Jackson Date: Sun, 14 Mar 2021 23:19:39 +0000 (+0000) Subject: cmdlistener: Call remove_occultation when occulter removed X-Git-Tag: otter-0.4.0~42 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=319d42f938eda19111bb03631d4e438b360ad5a7;p=otter.git cmdlistener: Call remove_occultation when occulter removed Signed-off-by: Ian Jackson --- diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index 82c78007..b03dfa65 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -245,7 +245,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( ig: &'igr mut Unauthorised, InstanceName>, update: MgmtGameInstruction, who: &Html, - _to_permute: &mut ToPermute, + to_permute: &mut ToPermute, ) -> Result ,ME> { @@ -587,7 +587,21 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( } else { Html::lit("") }; + let mut xupdates = vec![]; if let Some(gpc) = gpc { + if gpc.occult.is_active() { + xupdates.append( + &mut + remove_occultation( + &mut gs.gen.unique_gen(), + &mut gs.players, + &mut gs.pieces, + &mut gs.occults, + &mut ig.ipieces, + to_permute, + piece)? + ); + } ipc.p.delete_hook(&gpc, gs); } if let Some(occilk) = ipc.occilk { ig.ioccults.ilks.dispose(occilk); } @@ -597,7 +611,13 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( desc_html.0)), }], raw: None }, - Fine, None, ig_g) + Fine, + Some( + Box::new(move |prepub: &mut PrepareUpdatesBuffer| + prepub.piece_updates(xupdates)) + as ExecuteGameInsnResultsPrepub + ), + ig_g) }, MGI::AddPieces(PiecesSpec{ pos,posd,count,face,pinned,angle,info }) => {