Skip to main content

manabrew_engine/card/
trait_card_trait_changes.rs

1//! Rust trait parity for Java `ICardTraitChanges`.
2
3use crate::ids::CardId;
4use crate::replacement::ReplacementEffect;
5use crate::spellability::SpellAbility;
6use crate::staticability::StaticAbility;
7use crate::trigger::Trigger;
8
9/// Java-parity contract for applying trait/ability mutations to a card's
10/// spell abilities, triggers, replacements, and static abilities.
11pub trait CardTraitChanges {
12    fn apply_spell_ability(&self, list: Vec<SpellAbility>) -> Vec<SpellAbility> {
13        list
14    }
15
16    fn apply_trigger(&self, list: Vec<Trigger>) -> Vec<Trigger> {
17        list
18    }
19
20    fn apply_replacement_effect(&self, list: Vec<ReplacementEffect>) -> Vec<ReplacementEffect> {
21        list
22    }
23
24    fn apply_static_ability(&self, list: Vec<StaticAbility>) -> Vec<StaticAbility> {
25        list
26    }
27
28    fn change_text(&mut self);
29
30    fn copy(&self, host: CardId, lki: bool) -> Box<dyn CardTraitChanges>;
31}