Skip to main content

made_core/entities/ceremony_instance/
children.rs

1use crate::entities::CeremonyInstance;
2use crate::value_objects::{ChildGroupId, ChildSpawnCoordinates, ChildrenCompletedCondition};
3
4impl CeremonyInstance {
5    #[must_use]
6    pub fn children_completed_guard_is_satisfied(
7        &self,
8        condition: &ChildrenCompletedCondition,
9    ) -> bool {
10        let Some(record) = self.step_record(condition.step_id()) else {
11            return false;
12        };
13        let coordinates = ChildSpawnCoordinates::new(
14            condition.step_id().clone(),
15            self.current_state_visit,
16            self.current_state_iteration,
17            record.iteration(),
18        );
19        let group_id = ChildGroupId::derive(&self.id, &coordinates);
20        self.child_groups.get(&group_id).is_some_and(|group| {
21            group.plan().coordinates() == &coordinates
22                && condition
23                    .join()
24                    .is_satisfied(group.completions().len(), group.plan().children().len())
25        })
26    }
27}