Skip to main content

manabrew_engine/trigger/
trigger_waiting.rs

1use crate::event::RunParams;
2use crate::ids::PlayerId;
3use crate::trigger::Trigger;
4use crate::trigger::TriggerType;
5
6/// Mirrors Java's TriggerWaiting data object.
7#[derive(Debug, Clone)]
8pub struct TriggerWaiting {
9    pub mode: TriggerType,
10    pub params: RunParams,
11    /// Trigger-to-player mapping. Mirrors Java's TriggerWaiting.triggers field.
12    pub triggers: Option<Vec<(Trigger, PlayerId)>>,
13}
14
15impl TriggerWaiting {
16    /// Mirrors Java's TriggerWaiting.getController(Trigger).
17    /// Returns the controller for the given trigger, or None if the mapping is absent.
18    pub fn get_controller(&self, trigger: &Trigger) -> Option<PlayerId> {
19        let triggers = self.triggers.as_ref()?;
20        triggers
21            .iter()
22            .find(|(t, _)| t.id == trigger.id)
23            .map(|(_, player)| *player)
24    }
25}