manabrew_engine/replacement/
replace_counter.rs1use crate::card::Card;
6use crate::game::GameState;
7use crate::ids::CardId;
8
9use super::replacement_effect::ReplacementEffect;
10use super::replacement_handler::ReplacementEvent;
11use super::replacement_result::ReplacementResult;
12use super::replacement_type::ReplacementType;
13use crate::card_trait_base::CardTrait;
14
15pub fn can_replace(
17 effect: &ReplacementEffect,
18 event: &ReplacementEvent,
19 game: &GameState,
20 source_card: &Card,
21) -> bool {
22 if effect.event != ReplacementType::Counter {
23 return false;
24 }
25 let target_id = match event {
26 ReplacementEvent::Counter { card } => *card,
27 _ => return false,
28 };
29 let target_card = &game.cards[target_id.index()];
30 if let Some(valid) = effect.ir.valid_card_selector.as_ref() {
31 if !effect.matches_compiled_valid_card(valid, target_card, source_card) {
32 return false;
33 }
34 }
35 true
36}
37
38pub fn execute(
40 _effect: &ReplacementEffect,
41 _event: &mut ReplacementEvent,
42 _game: &GameState,
43 _source_card_id: CardId,
44) -> ReplacementResult {
45 ReplacementResult::Replaced
46}