Skip to main content

manabrew_engine/ability/effects/
choose_direction_effect.rs

1use super::EffectContext;
2use crate::agent::BinaryChoiceKind;
3
4/// `SP$ ChooseDirection` — choose left or right and remember it on source.
5///
6/// Mirrors Java `ChooseDirectionEffect.java`.
7/// Struct form of this effect so it can participate in the
8/// `SpellAbilityEffect` trait hierarchy — mirrors Java's
9/// `ChooseDirectionEffect` class extending `SpellAbilityEffect`.
10#[manabrew_engine_macros::spell_effect(ChooseDirectionEffect)]
11fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
12    let controller = sa.activating_player;
13    let Some(source_id) = sa.source else { return };
14    let source_name = ctx.game.card(source_id).card_name.clone();
15    let choose_left = ctx.agents[controller.index()].choose_binary(
16        controller,
17        "Choose direction",
18        BinaryChoiceKind::LeftOrRight,
19        None,
20        Some(source_id),
21        sa.api,
22    );
23    ctx.game.card_mut(source_id).set_s_var(
24        "ChosenDirection",
25        if choose_left { "Left" } else { "Right" },
26    );
27}