package forge.card.spellability; import forge.Card; import forge.Player; import java.util.ArrayList; /** * <p>Target_Choices class.</p> * * @author Forge * @version $Id: $ */ public class Target_Choices { private int numTargeted = 0; /** * <p>Getter for the field <code>numTargeted</code>.</p> * * @return a int. */ public int getNumTargeted() { return numTargeted; } // Card or Player are legal targets. private ArrayList<Card> targetCards = new ArrayList<Card>(); private ArrayList<Player> targetPlayers = new ArrayList<Player>(); private ArrayList<SpellAbility> targetSAs = new ArrayList<SpellAbility>(); /** * <p>addTarget.</p> * * @param o a {@link java.lang.Object} object. * @return a boolean. */ public boolean addTarget(Object o) { if (o instanceof Player) return addTarget((Player) o); else if (o instanceof Card) return addTarget((Card) o); else if (o instanceof SpellAbility) return addTarget((SpellAbility) o); return false; } /** * <p>addTarget.</p> * * @param c a {@link forge.Card} object. * @return a boolean. */ public boolean addTarget(Card c) { if (!targetCards.contains(c)) { targetCards.add(c); numTargeted++; return true; } return false; } /** * <p>addTarget.</p> * * @param p a {@link forge.Player} object. * @return a boolean. */ public boolean addTarget(Player p) { if (!targetPlayers.contains(p)) { targetPlayers.add(p); numTargeted++; return true; } return false; } /** * <p>addTarget.</p> * * @param sa a {@link forge.card.spellability.SpellAbility} object. * @return a boolean. */ public boolean addTarget(SpellAbility sa) { if (!targetSAs.contains(sa)) { targetSAs.add(sa); numTargeted++; return true; } return false; } /** * <p>Getter for the field <code>targetCards</code>.</p> * * @return a {@link java.util.ArrayList} object. */ public ArrayList<Card> getTargetCards() { return targetCards; } /** * <p>Getter for the field <code>targetPlayers</code>.</p> * * @return a {@link java.util.ArrayList} object. */ public ArrayList<Player> getTargetPlayers() { return targetPlayers; } /** * <p>Getter for the field <code>targetSAs</code>.</p> * * @return a {@link java.util.ArrayList} object. */ public ArrayList<SpellAbility> getTargetSAs() { return targetSAs; } /** * <p>getTargets.</p> * * @return a {@link java.util.ArrayList} object. */ public ArrayList<Object> getTargets() { ArrayList<Object> tgts = new ArrayList<Object>(); tgts.addAll(targetPlayers); tgts.addAll(targetCards); tgts.addAll(targetSAs); return tgts; } /** * <p>getTargetedString.</p> * * @return a {@link java.lang.String} object. */ public String getTargetedString() { ArrayList<Object> tgts = getTargets(); StringBuilder sb = new StringBuilder(""); for (Object o : tgts) { if (o instanceof Player) { Player p = (Player) o; sb.append(p.getName()); } if (o instanceof Card) { Card c = (Card) o; sb.append(c); } if (o instanceof SpellAbility) { SpellAbility sa = (SpellAbility) o; sb.append(sa); } sb.append(" "); } return sb.toString(); } }