chiark / gitweb /
hidden: Provide total ppiece count
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 24 Mar 2021 17:40:36 +0000 (17:40 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 24 Mar 2021 17:40:36 +0000 (17:40 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/hidden.rs
src/vpid.rs

index d73485aa37b6863080a248aa5371ce179af1b03a..f136d55b6226971157b2bc5e1d69aae3365f17b0 100644 (file)
@@ -81,6 +81,7 @@ pub enum OccDisplacement {
 
 impl PieceOccult {
   pub fn is_active(&self) -> bool { self.active.is_some() }
+
   #[throws(IE)]
   pub fn active_nondefault_views(&self, goccults: &GameOccults)
                                  -> Option<usize> {
@@ -92,6 +93,19 @@ impl PieceOccult {
       None
     }
   }
+
+  #[throws(IE)]
+  pub fn active_total_ppieces(&self, goccults: &GameOccults)
+                              -> Option<NotchNumber> {
+    if let Some(occid) = self.active {
+      let occ = goccults.occults.get(occid).ok_or_else(
+        || internal_error_bydebug(&self))?;
+      Some(occ.notches.len())
+    } else {
+      None
+    }
+  }
+
   pub fn passive_occid(&self) -> Option<OccId> { Some(self.passive?.occid) }
   pub fn passive_delete_hook(&self, goccults: &mut GameOccults,
                              piece: PieceId) {
index e4f9e971e8948d7643d577a3a191e8520bffbc9f..e5f4a0bd87af741d16b09dd4ce5b7a9574d7ede3 100644 (file)
@@ -154,6 +154,7 @@ impl Notches {
     }
   }
 
+  pub fn len(&self) -> NotchNumber { self.used }
   pub fn is_empty(&self) -> bool { self.used == 0 }
 
   #[cfg(test)]