manabrew_engine/replacement/
replace_explore.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(
18 effect: &ReplacementEffect,
19 event: &ReplacementEvent,
20 game: &GameState,
21 source_card: &Card,
22) -> bool {
23 if effect.event != ReplacementType::Explore {
24 return false;
25 }
26 let card = match event {
27 ReplacementEvent::Explore { card } => *card,
28 _ => return false,
29 };
30 let target_card = &game.cards[card.index()];
31 if let Some(valid) = effect.ir.valid_explorer_text.as_deref() {
33 if !effect.matches_valid_card(valid, target_card, source_card) {
34 return false;
35 }
36 } else if let Some(valid) = effect.ir.valid_card_selector.as_ref() {
37 if !effect.matches_compiled_valid_card(valid, target_card, source_card) {
38 return false;
39 }
40 }
41 true
42}
43
44pub fn execute(
46 effect: &ReplacementEffect,
47 _event: &mut ReplacementEvent,
48 _game: &GameState,
49 _source_card_id: CardId,
50) -> ReplacementResult {
51 if effect.prevents() || effect.has_skip() {
52 return ReplacementResult::Skipped;
53 }
54 ReplacementResult::Replaced
55}