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}