From: Ian Jackson Date: Tue, 16 Mar 2021 12:15:18 +0000 (+0000) Subject: hidden: Pass ioccults through X-Git-Tag: otter-0.4.0~17 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=8eac588f00010d46581aadda52e2c126b7d54703;p=otter.git hidden: Pass ioccults through Signed-off-by: Ian Jackson --- diff --git a/daemon/api.rs b/daemon/api.rs index 1e03cd55..0e107ae9 100644 --- a/daemon/api.rs +++ b/daemon/api.rs @@ -345,6 +345,7 @@ api_route!{ gs, who_by, ipieces, + ioccults, to_permute, piece, vanilla, diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index d5337168..0c613859 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -604,6 +604,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( &mut gs.pieces, &mut gs.occults, &mut ig.ipieces, + &mut ig.ioccults, to_permute, piece)? ); diff --git a/src/hand.rs b/src/hand.rs index f6a052ea..c3b0e74a 100644 --- a/src/hand.rs +++ b/src/hand.rs @@ -142,7 +142,7 @@ impl PieceTrait for Hand { opname: &str, wrc: WhatResponseToClientOp, _: ShowUnocculted) -> UpdateFromOpComplex { - let ApiPieceOpArgs { gs,player,piece,ipieces,to_permute,.. } = a; + let ApiPieceOpArgs { gs,player,piece,ipieces,ioccults,to_permute,.. } = a; let gen = &mut gs.gen; let gplayers = &mut gs.players; let gpieces = &mut gs.pieces; @@ -198,7 +198,7 @@ impl PieceTrait for Hand { dbgc!("creating occ"); let xupdates = create_occultation(&mut gen.unique_gen(), - gplayers, gpieces, goccults, ipieces, + gplayers, gpieces, goccults, ipieces, ioccults, to_permute, region, piece, views)?; @@ -208,7 +208,7 @@ impl PieceTrait for Hand { ("deactivate", true) => { let xupdates = remove_occultation(&mut gen.unique_gen(), - gplayers, gpieces, goccults, ipieces, + gplayers, gpieces, goccults, ipieces, ioccults, to_permute, piece) .map_err(|ie| ApiPieceOpError::ReportViaResponse(ie.into()))?; diff --git a/src/hidden.rs b/src/hidden.rs index 79a351f9..94a0f369 100644 --- a/src/hidden.rs +++ b/src/hidden.rs @@ -282,6 +282,7 @@ fn recalculate_occultation_general< gpieces: &mut GPieces, goccults: &mut GameOccults, ipieces: &IPieces, + _ioccults: &IOccults, to_permute: &mut ToPermute, piece: PieceId, // if no change, we return ret_vanilla(log_visible) @@ -496,6 +497,7 @@ pub fn recalculate_occultation_piece( gs: &mut GameState, who_by: Html, ipieces: &IPieces, + ioccults: &IOccults, to_permute: &mut ToPermute, piece: PieceId, (vanilla_wrc, vanilla_op, vanilla_log): PUFOS, @@ -504,7 +506,8 @@ pub fn recalculate_occultation_piece( { recalculate_occultation_general( &mut gs.gen.unique_gen(), - &gs.players, &mut gs.pieces, &mut gs.occults, ipieces, to_permute, + &gs.players, &mut gs.pieces, &mut gs.occults, ipieces, ioccults, + to_permute, piece, vanilla_log, |log| (vanilla_wrc, vanilla_op, log).into(), |old, new, show| vec![ LogEntry { html: Html(format!( @@ -528,12 +531,13 @@ fn recalculate_occultation_ofmany( gpieces: &mut GPieces, goccults: &mut GameOccults, ipieces: &IPieces, + ioccults: &IOccults, to_permute: &mut ToPermute, ppiece: PieceId, updates: &mut Vec<(PieceId, PieceUpdateOps)>, ){ recalculate_occultation_general( - gen, gplayers, gpieces, goccults, ipieces, to_permute, + gen, gplayers, gpieces, goccults, ipieces, ioccults, to_permute, ppiece, (), |_|(), |_,_,_|(), |puo_pp, ()|{ @@ -624,6 +628,7 @@ pub fn create_occultation( gpieces: &mut GPieces, goccults: &mut GameOccults, ipieces: &IPieces, + ioccults: &IOccults, to_permute: &mut ToPermute, region: Area, occulter: PieceId, @@ -672,7 +677,8 @@ pub fn create_occultation( for &ppiece in &recalc { recalculate_occultation_ofmany(gen, - gplayers, gpieces, goccults, ipieces, + gplayers, gpieces, goccults, + ipieces, ioccults, to_permute, ppiece, &mut updates)?; } @@ -701,6 +707,7 @@ pub fn remove_occultation( gpieces: &mut GPieces, goccults: &mut GameOccults, ipieces: &IPieces, + ioccults: &IOccults, to_permute: &mut ToPermute, occulter: PieceId, ) -> Vec<(PieceId, PieceUpdateOps)> { @@ -740,7 +747,8 @@ pub fn remove_occultation( let pieces: Vec<_> = occ.notches.iter().collect(); for &ppiece in pieces.iter() { recalculate_occultation_ofmany(gen, - gplayers, gpieces, goccults, ipieces, + gplayers, gpieces, goccults, + ipieces, ioccults, to_permute, ppiece, &mut updates) .unwrap_or_else(|e| {