Skip to main content

manabrew_engine/ability/effects/
reorder_zone_effect.rs

1//! ReorderZone effect — let a player reorder cards in a zone.
2//!
3//! Ported from Java's `ReorderZoneEffect.java`.
4//! Typically used for: "look at the top N cards, put them back in any order."
5
6use forge_foundation::ZoneType;
7
8use super::EffectContext;
9
10/// Struct form of this effect so it can participate in the
11/// `SpellAbilityEffect` trait hierarchy — mirrors Java's
12/// `ReorderZoneEffect` class extending `SpellAbilityEffect`.
13#[manabrew_engine_macros::spell_effect(ReorderZoneEffect)]
14fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
15    let controller = sa.activating_player;
16    let zone = sa.ir.zone.unwrap_or(ZoneType::Library);
17
18    let players = if let Some(def) = sa.defined_player() {
19        super::resolve_defined_players(def, controller, ctx.game)
20    } else {
21        vec![controller]
22    };
23
24    for pid in players {
25        // For library: agent can reorder the top cards
26        // For now, the parity agent doesn't have reorder preference
27        // so we leave cards in their current order.
28        // A full implementation would call agent.order_cards().
29        let _ = ctx.game.cards_in_zone(zone, pid);
30    }
31}