pub struct TriggerHandler { /* private fields */ }Expand description
Mirrors Java’s TriggerHandler — central trigger dispatcher. In Java, lives on Game. In Rust, lives on GameLoop because active_triggers and waiting_triggers are transient processing state.
Implementations§
Source§impl TriggerHandler
impl TriggerHandler
pub fn new() -> Self
Sourcepub fn run_trigger(&mut self, mode: TriggerType, params: RunParams, hold: bool)
pub fn run_trigger(&mut self, mode: TriggerType, params: RunParams, hold: bool)
Mirrors Java’s runTrigger() — main entry point.
Called from game actions when events occur.
If hold is true, event is queued; otherwise it’s also queued
(all triggers go through the waiting queue for APNAP ordering).
Sourcepub fn run_trigger_with_game(
&mut self,
game: &GameState,
mode: TriggerType,
params: RunParams,
hold: bool,
) -> Vec<PendingTrigger>
pub fn run_trigger_with_game( &mut self, game: &GameState, mode: TriggerType, params: RunParams, hold: bool, ) -> Vec<PendingTrigger>
Java-parity entrypoint that can resolve triggers immediately when the event should not be held/frozen.
Sourcepub fn parse_trigger(&mut self, raw: &str) -> Option<Trigger>
pub fn parse_trigger(&mut self, raw: &str) -> Option<Trigger>
Java parity wrapper for TriggerHandler.parseTrigger(String).
Sourcepub fn collect_trigger_for_waiting(
&mut self,
mode: TriggerType,
params: RunParams,
)
pub fn collect_trigger_for_waiting( &mut self, mode: TriggerType, params: RunParams, )
Java parity wrapper for TriggerHandler.collectTriggerForWaiting(…).
Sourcepub fn waiting_trigger_count(&self) -> usize
pub fn waiting_trigger_count(&self) -> usize
Number of triggers in the waiting queue (for debug/diagnostics).
pub fn pre_matched_trigger_count(&self) -> usize
Sourcepub fn has_number_drawn_triggers(&self, game: &GameState) -> bool
pub fn has_number_drawn_triggers(&self, game: &GameState) -> bool
Match waiting triggers NOW, while source cards are still in their
current zones. Stores results in pre_matched_triggers so that a
subsequent run_waiting_triggers call returns them even if SBA has
since moved the source card (e.g. Raptor Hatchling dying to combat
damage before triggers go on the stack).
Call this immediately after firing triggers and before SBA. Returns true if any active trigger is a Drawn trigger with Number$ set. Used to gate flush_waiting_triggers during draws to avoid disrupting other trigger matching when no Number$-gated Drawn triggers exist.
pub fn flush_waiting_triggers(&mut self, game: &GameState)
Sourcepub fn run_waiting_triggers(&mut self, game: &GameState) -> Vec<PendingTrigger>
pub fn run_waiting_triggers(&mut self, game: &GameState) -> Vec<PendingTrigger>
Mirrors Java’s runWaitingTriggers(). Drains waiting queue, matches triggers, returns PendingTriggers. The caller (game_loop) handles OptionalDecider$ prompting.
pub fn process_waiting_triggers( &mut self, mana_pools: &[ManaPool], game: &mut GameState, agents: &mut [Box<dyn PlayerAgent>], ) -> Vec<TriggerPushLog>
pub fn process_pending_triggers( &mut self, mana_pools: &[ManaPool], game: &mut GameState, agents: &mut [Box<dyn PlayerAgent>], pending: Vec<PendingTrigger>, ) -> Vec<TriggerPushLog>
Sourcepub fn register_delayed_trigger(&mut self, delayed: DelayedTrigger)
pub fn register_delayed_trigger(&mut self, delayed: DelayedTrigger)
Register a delayed trigger (one-shot, fires once then is removed).
Mirrors Java’s TriggerHandler.registerDelayedTrigger().
pub fn clear_delayed_trigger(&mut self)
pub fn register_this_turn_delayed_trigger(&mut self, delayed: DelayedTrigger)
pub fn clear_this_turn_delayed_trigger(&mut self)
pub fn register_player_defined_delayed_trigger( &mut self, player: PlayerId, delayed: DelayedTrigger, )
pub fn clear_player_defined_delayed_trigger(&mut self)
pub fn handle_player_defined_del_triggers(&mut self, player: PlayerId)
Sourcepub fn reset_active_triggers(&mut self, game: &GameState)
pub fn reset_active_triggers(&mut self, game: &GameState)
Mirrors Java’s resetActiveTriggers(). Scans all cards in game, collects active triggers.
Sourcepub fn register_active_trigger(&mut self, game: &GameState, card_id: CardId)
pub fn register_active_trigger(&mut self, game: &GameState, card_id: CardId)
Mirrors Java’s registerActiveTrigger(card). Registers a single card’s triggers.
Sourcepub fn clear_active_triggers(&mut self)
pub fn clear_active_triggers(&mut self)
Java parity wrapper for TriggerHandler.clearActiveTriggers().
Sourcepub fn register_active_ltb_trigger(&mut self, game: &GameState, card_id: CardId)
pub fn register_active_ltb_trigger(&mut self, game: &GameState, card_id: CardId)
Java parity wrapper for TriggerHandler.registerActiveLTBTrigger(card). Registers all of a card’s triggers as active, using current trigger indices.
Sourcepub fn register_one_trigger(
&mut self,
game: &GameState,
card_id: CardId,
trigger_index: usize,
)
pub fn register_one_trigger( &mut self, game: &GameState, card_id: CardId, trigger_index: usize, )
Java parity wrapper for TriggerHandler.registerOneTrigger(…).
Sourcepub fn unregister_active_triggers(&mut self, card_id: CardId)
pub fn unregister_active_triggers(&mut self, card_id: CardId)
Remove triggers for a card that left a trigger zone.
pub fn clear_waiting_triggers(&mut self)
pub fn on_player_lost(&mut self, player: PlayerId)
pub fn suppress_mode(&mut self, mode: TriggerType)
pub fn set_suppress_all_triggers(&mut self, suppress: bool)
Sourcepub fn get_active_trigger(
&self,
game: &GameState,
mode: TriggerType,
params: &RunParams,
) -> Vec<Trigger>
pub fn get_active_trigger( &self, game: &GameState, mode: TriggerType, params: &RunParams, ) -> Vec<Trigger>
Mirrors Java’s TriggerHandler.getActiveTrigger(TriggerType, Map<AbilityKey, Object>). Returns all active triggers that can run for the given mode and params.
pub fn is_trigger_suppressed(&self, mode: TriggerType) -> bool
pub fn clear_suppression(&mut self, mode: TriggerType)
Trait Implementations§
Source§impl Clone for TriggerHandler
impl Clone for TriggerHandler
Source§fn clone(&self) -> TriggerHandler
fn clone(&self) -> TriggerHandler
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more