use forge_foundation::ZoneType;
use crate::game::GameState;
use crate::spellability::SpellAbility;
pub fn can_play(sa: &SpellAbility, game: &GameState) -> bool {
let card_id = match sa.source {
Some(id) => id,
None => return false,
};
let player = game.player(sa.activating_player);
if !player.is_alive() {
return false;
}
if game.card_is_in_zone(card_id, ZoneType::Battlefield) {
return false;
}
if player.lands_played_this_turn >= player.max_land_plays_per_turn {
return false;
}
let is_main = game.turn.phase.is_main();
let stack_empty = game.stack.is_empty();
let is_active = game.turn.active_player == sa.activating_player;
is_main && stack_empty && is_active
}
pub fn resolve(sa: &SpellAbility, game: &mut GameState) {
let card_id = match sa.source {
Some(id) => id,
None => return,
};
let player = sa.activating_player;
game.move_card(card_id, ZoneType::Battlefield, player);
game.player_record_land_play(player);
}
pub fn is_land_ability() -> bool {
true
}
pub fn to_unsuppressed_string(sa: &SpellAbility) -> String {
if !sa.description.is_empty() {
return sa.description.clone();
}
match sa.source {
Some(_) => "Play land".to_string(),
None => "Play land".to_string(),
}
}