private Set<Card> filterHidden(Set<Card> cards) { Set<Card> newSet = new LinkedHashSet<>(); for (Card card : cards) { if (!hiddenCards.contains(card.getId())) { newSet.add(card); } } return newSet; }
public FixedTarget(Card card, Game game) { this.targetId = card.getId(); this.zoneChangeCounter = card.getZoneChangeCounter(game); this.initialized = true; }
public CardsImpl(Set<Card> cards) { for (Card card : cards) { this.add(card.getId()); } }
@Override public void addAll(Set<Card> cards) { for (Card card : cards) { add(card.getId()); } }
public void addAll(Set<Card> cards, Game game) { for (Card card : cards) { card.setZone(Zone.LIBRARY, game); library.add(card.getId()); } }
public void removeCard(UUID cardId) { this.mainModel.removeCard(cardId); this.cardGrid.removeCard(cardId); for (Card card : cards) { if (card.getId().equals(cardId)) { cards.remove(card); break; } } }
public FixedTargets(Set<Card> cards, Game game) { for (Card card : cards) { MageObjectReference mor = new MageObjectReference(card.getId(), card.getZoneChangeCounter(game), game); targets.add(mor); } this.initialized = true; }
public void setTopHalfCard(Card topHalfCard, Game game) { this.topHalfCard = topHalfCard; this.topLastZoneChangeCounter = topHalfCard.getZoneChangeCounter(game); halves.add(topHalfCard.getId()); }
public CardsView(Game game, Collection<? extends Card> cards) { for (Card card : cards) { this.put(card.getId(), new CardView(card, game, false)); } }
@Override public Set<UUID> possibleTargets(UUID sourceControllerId, Cards cards, Game game) { Set<UUID> possibleTargets = new HashSet<>(); Player player = game.getPlayer(sourceControllerId); for (Card card : cards.getCards(filter, game)) { if (player.getGraveyard().getCards(game).contains(card)) { possibleTargets.add(card.getId()); } } return possibleTargets; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Card card = game.getCard(event.getSourceId()); if (card != null && card.getId().equals(source.getSourceId())) { Zone zone = game.getState().getZone(card.getId()); if (zone != null && (zone != Zone.GRAVEYARD)) { return true; } } return false; } }
@Override public boolean applies(UUID objectId, Ability source, UUID affectedControllerId, Game game) { Card card = game.getCard(objectId); if (card != null && affectedControllerId.equals(card.getOwnerId()) && game.getState().getZone(card.getId()) == Zone.EXILED) { return true; } return false; } }
public void addCard(Card card) { setZone(card.getId(), Zone.OUTSIDE); for (Ability ability : card.getAbilities()) { addAbility(ability, card); } }
public LookedAtView(String name, Cards cards, Game game) { this.name = name; for (Card card: cards.getCards(game)) { this.cards.put(card.getId(), new SimpleCardView(card.getId(), card.getExpansionSetCode(), card.getCardNumber(), card.getUsesVariousArt(), card.getTokenSetCode(), card.getTokenDescriptor())); } }
@Override public boolean lookAtFaceDownCard(Card card, Game game ) { if (null != game.getContinuousEffects().asThough(card.getId(), AsThoughEffectType.LOOK_AT_FACE_DOWN, card.getSpellAbility(), this.getId(), game)) { if (chooseUse(Outcome.Benefit, "Look at that card?", null, game)) { Cards cards = new CardsImpl(card); this.lookAtCards(getName() + " - " + sdf.format(System.currentTimeMillis()), cards, game); return true; } } return false; }
public ExileView(ExileZone exileZone, Game game) { this.name = exileZone.getName(); this.id = exileZone.getId(); for (Card card: exileZone.getCards(game)) { this.put(card.getId(), new CardView(card, game, false)); } }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(getSourceId())) { Card card = game.getCard(getSourceId()); if (card != null && game.getState().getZone(card.getId()) == Zone.GRAVEYARD && card.getCounters(game).getCount(CounterType.REPAIR) == 0) { return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(getSourceId())) { Card card = game.getCard(getSourceId()); if (card != null && game.getState().getZone(card.getId()) == Zone.EXILED && card.getCounters(game).getCount(CounterType.TIME) == 0) { return true; } } return false; }
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(source.getFirstTarget()); Player player = game.getPlayer(source.getControllerId()); if (card == null || player == null || game.getState().getZone(card.getId()) != Zone.GRAVEYARD) { return false; } return player.putCardsOnBottomOfLibrary(card, game, source, false); } }
@Override public boolean cast(Game game, Zone fromZone, SpellAbility ability, UUID controllerId) { Card mainCard = getMainCard(); ZoneChangeEvent event = new ZoneChangeEvent(mainCard.getId(), ability.getId(), controllerId, fromZone, Zone.STACK); ZoneChangeInfo.Stack info = new ZoneChangeInfo.Stack(event, new Spell(this, ability.getSpellAbilityToResolve(game), controllerId, event.getFromZone())); return ZonesHandler.cast(info, game); }