chiark / gitweb /
Implement piece_at_all_occulted and provide .._involved_in_..
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Feb 2021 21:42:08 +0000 (21:42 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Feb 2021 21:42:08 +0000 (21:42 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs
src/hidden.rs

index 309641cd18e1f33090db92de8456b42dc0cdbae3..e7dac3dd0860d83e99ac319019ac9af859261b20 100644 (file)
@@ -379,7 +379,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
         |(piece,gpc)| (|| Ok::<_,MgmtError>(if_chain!{
           let &GPiece { pos, face, .. } = gpc;
           if let Some(p) = ig.ipieces.get(piece);
-          let visible = if ! piece_at_all_occulted(&ig.gs.occults, piece) {
+          let visible = if ! piece_at_all_occulted(gpc) {
             // todo: something more sophisticated would be nice
             let pri = PieceRenderInstructions::new_visible(
               // visible id is internal one here
index 69c5826e0aa9651514653e5c762a98574f504d82..7eb368c8bc778399c25e06da4a51ae17dab4b750 100644 (file)
@@ -200,11 +200,12 @@ fn inner(
   inner(occults, player, gpl, piece, gpc, p.borrow())
 }
 
-pub fn piece_at_all_occulted(
-  _occults: &GameOccults, // xxx
-  _piece: PieceId, // xxx
-) -> bool {
-  false
+pub fn piece_at_all_occulted(gpc: &GPiece) -> bool {
+  gpc.occult.passive.is_some()
+}
+pub fn piece_involved_in_occultation(gpc: &GPiece) -> bool {
+  gpc.occult.passive.is_some() ||
+  gpc.occult.active.is_some()
 }
 
 pub fn vpiece_decode(