mirror of
https://github.com/correl/mage.git
synced 2024-11-16 03:00:12 +00:00
Added method to player to put a list of cards on the bottom of the library in any order.
This commit is contained in:
parent
043fa36618
commit
4cf951399c
2 changed files with 47 additions and 1 deletions
|
@ -241,6 +241,18 @@ public interface Player extends MageItem, Copyable<Player> {
|
|||
boolean choose(Outcome outcome, Choice choice, Game game);
|
||||
boolean choosePile(Outcome outcome, String message, List<? extends Card> pile1, List<? extends Card> pile2, Game game);
|
||||
boolean playMana(ManaCost unpaid, Game game);
|
||||
|
||||
/**
|
||||
* Moves the cards form <cards> to the bottom of the players library.
|
||||
*
|
||||
* @param cards - list of cards that have to be moved
|
||||
* @param game - game
|
||||
* @param anyOrder - true if player can determine the order of the cards
|
||||
* @param source - source ability
|
||||
* @return
|
||||
*/
|
||||
boolean putCardsOnBottomOfLibrary(Cards cards, Game game, Ability source, boolean anyOrder);
|
||||
|
||||
// set the value for X spells and abilities
|
||||
int announceXMana(int min, int max, String message, Game game, Ability ability);
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.players;
|
||||
|
||||
import java.awt.Event;
|
||||
import mage.Constants.AsThoughEffectType;
|
||||
import mage.Constants.Outcome;
|
||||
import mage.Constants.RangeOfInfluence;
|
||||
|
@ -77,7 +76,9 @@ import java.util.*;
|
|||
import mage.Constants;
|
||||
import mage.Constants.SpellAbilityType;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.game.stack.Spell;
|
||||
import mage.target.TargetCard;
|
||||
|
||||
|
||||
public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Serializable {
|
||||
|
@ -605,6 +606,39 @@ public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Ser
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean putCardsOnBottomOfLibrary(Cards cards, Game game, Ability source, boolean anyOrder) {
|
||||
if (cards.size() != 0) {
|
||||
if (!anyOrder) {
|
||||
for (UUID cardId : cards) {
|
||||
Card card =game.getCard(cardId);
|
||||
if (card != null) {
|
||||
card.moveToZone(Constants.Zone.LIBRARY, source.getSourceId(), game, false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
TargetCard target = new TargetCard(Constants.Zone.PICK, new FilterCard("card to put on the bottom of your library"));
|
||||
target.setRequired(true);
|
||||
while (cards.size() > 1) {
|
||||
this.choose(Constants.Outcome.Neutral, cards, target, game);
|
||||
Card chosenCard = cards.get(target.getFirstTarget(), game);
|
||||
if (chosenCard != null) {
|
||||
cards.remove(chosenCard);
|
||||
chosenCard.moveToZone(Constants.Zone.LIBRARY, source.getSourceId(), game, false);
|
||||
}
|
||||
target.clearChosen();
|
||||
}
|
||||
if (cards.size() == 1) {
|
||||
Card chosenCard = cards.get(cards.iterator().next(), game);
|
||||
chosenCard.moveToZone(Constants.Zone.LIBRARY, source.getSourceId(), game, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean cast(SpellAbility ability, Game game, boolean noMana) {
|
||||
if (!ability.getSpellAbilityType().equals(SpellAbilityType.BASE)) {
|
||||
|
|
Loading…
Reference in a new issue