chiark / gitweb /
hidden: Pass ioccults through
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 16 Mar 2021 12:15:18 +0000 (12:15 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 16 Mar 2021 12:15:18 +0000 (12:15 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/api.rs
daemon/cmdlistener.rs
src/hand.rs
src/hidden.rs

index 1e03cd55be12aaf0823997431114b0c2c5be6f65..0e107ae9ada321d4406aaed3057755f8c20c52cb 100644 (file)
@@ -345,6 +345,7 @@ api_route!{
         gs,
         who_by,
         ipieces,
+        ioccults,
         to_permute,
         piece,
         vanilla,
index d5337168a1721c71545200a2fa8c4137b1dd4bb2..0c6138591838764fa2f2ac8d8cb256bd5c80422e 100644 (file)
@@ -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)?
           );
index f6a052ea104750e59135e08103f960a9b0ca9901..c3b0e74a53d00cdff9845471d2e37d213ce7463e 100644 (file)
@@ -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()))?;
 
index 79a351f907936b4b6fb451ba19c28eb265459435..94a0f3698613ceeebbb26c31299768db22a0e9be 100644 (file)
@@ -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| {