mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Optimize getCardTypesFromList
This commit is contained in:
@@ -535,7 +535,7 @@ public class GameAction {
|
|||||||
game.getTriggerHandler().cleanUpTemporaryTriggers();
|
game.getTriggerHandler().cleanUpTemporaryTriggers();
|
||||||
game.getReplacementHandler().cleanUpTemporaryReplacements();
|
game.getReplacementHandler().cleanUpTemporaryReplacements();
|
||||||
|
|
||||||
for(Player p : game.getPlayers()) {
|
for (Player p : game.getPlayers()) {
|
||||||
p.getManaPool().restoreColorReplacements();
|
p.getManaPool().restoreColorReplacements();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1886,10 +1886,9 @@ public class Card extends GameEntity implements Comparable<Card>, IIdentifiable
|
|||||||
public final FCollectionView<SpellAbility> getSpells() {
|
public final FCollectionView<SpellAbility> getSpells() {
|
||||||
final FCollection<SpellAbility> res = new FCollection<SpellAbility>();
|
final FCollection<SpellAbility> res = new FCollection<SpellAbility>();
|
||||||
for (final SpellAbility sa : currentState.getNonManaAbilities()) {
|
for (final SpellAbility sa : currentState.getNonManaAbilities()) {
|
||||||
if (!sa.isSpell()) {
|
if (sa.isSpell()) {
|
||||||
continue;
|
res.add(sa);
|
||||||
}
|
}
|
||||||
res.add(sa);
|
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -6226,7 +6225,7 @@ public class Card extends GameEntity implements Comparable<Card>, IIdentifiable
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setSplitStateToPlayAbility(SpellAbility sa) {
|
public void setSplitStateToPlayAbility(SpellAbility sa) {
|
||||||
if (!isSplitCard()) return; // just in case
|
if (!isSplitCard()) { return; } // just in case
|
||||||
// Split card support
|
// Split card support
|
||||||
for (SpellAbility a : getState(CardStateName.LeftSplit).getNonManaAbilities()) {
|
for (SpellAbility a : getState(CardStateName.LeftSplit).getNonManaAbilities()) {
|
||||||
if (sa == a || sa.getDescription().equals(String.format("%s (without paying its mana cost)", a.getDescription()))) {
|
if (sa == a || sa.getDescription().equals(String.format("%s (without paying its mana cost)", a.getDescription()))) {
|
||||||
@@ -6240,9 +6239,9 @@ public class Card extends GameEntity implements Comparable<Card>, IIdentifiable
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sa.getHostCard().hasKeyword("Fuse")) // it's ok that such card won't change its side
|
if (sa.getHostCard().hasKeyword("Fuse")) { // it's ok that such card won't change its side
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
throw new RuntimeException("Not found which part to choose for ability " + sa + " from card " + this);
|
throw new RuntimeException("Not found which part to choose for ability " + sa + " from card " + this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,9 +19,11 @@ package forge.game.card;
|
|||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
import forge.GameCommand;
|
import forge.GameCommand;
|
||||||
import forge.card.CardStateName;
|
import forge.card.CardStateName;
|
||||||
|
import forge.card.CardType;
|
||||||
import forge.card.ColorSet;
|
import forge.card.ColorSet;
|
||||||
import forge.card.MagicColor;
|
import forge.card.MagicColor;
|
||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
@@ -1931,77 +1933,14 @@ public class CardFactoryUtil {
|
|||||||
return filteredkw;
|
return filteredkw;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* getCardTypesFromList.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param list
|
|
||||||
* a {@link forge.CardList} object.
|
|
||||||
* @return a int.
|
|
||||||
*/
|
|
||||||
public static int getCardTypesFromList(final CardCollectionView list) {
|
public static int getCardTypesFromList(final CardCollectionView list) {
|
||||||
int count = 0;
|
EnumSet<CardType.CoreType> types = EnumSet.noneOf(CardType.CoreType.class);
|
||||||
for (Card c1 : list) {
|
for (Card c1 : list) {
|
||||||
if (c1.isCreature()) {
|
Iterables.addAll(types, c1.getType().getCoreTypes());
|
||||||
count++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (Card c1 : list) {
|
return types.size();
|
||||||
if (c1.isSorcery()) {
|
|
||||||
count++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (Card c1 : list) {
|
|
||||||
if (c1.isInstant()) {
|
|
||||||
count++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (Card c1 : list) {
|
|
||||||
if (c1.isArtifact()) {
|
|
||||||
count++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (Card c1 : list) {
|
|
||||||
if (c1.isEnchantment()) {
|
|
||||||
count++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (Card c1 : list) {
|
|
||||||
if (c1.isLand()) {
|
|
||||||
count++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (Card c1 : list) {
|
|
||||||
if (c1.isPlaneswalker()) {
|
|
||||||
count++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (Card c1 : list) {
|
|
||||||
if (c1.isTribal()) {
|
|
||||||
count++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* getBushidoEffects.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param c
|
|
||||||
* a {@link forge.game.card.Card} object.
|
|
||||||
* @return a {@link java.util.ArrayList} object.
|
|
||||||
*/
|
|
||||||
public static ArrayList<SpellAbility> getBushidoEffects(final Card c) {
|
public static ArrayList<SpellAbility> getBushidoEffects(final Card c) {
|
||||||
final ArrayList<SpellAbility> list = new ArrayList<SpellAbility>();
|
final ArrayList<SpellAbility> list = new ArrayList<SpellAbility>();
|
||||||
for (final String kw : c.getKeywords()) {
|
for (final String kw : c.getKeywords()) {
|
||||||
|
|||||||
@@ -504,7 +504,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final void finishResolving(final SpellAbility sa, final boolean fizzle) {
|
private final void finishResolving(final SpellAbility sa, final boolean fizzle) {
|
||||||
|
|
||||||
// remove SA and card from the stack
|
// remove SA and card from the stack
|
||||||
removeCardFromStack(sa, fizzle);
|
removeCardFromStack(sa, fizzle);
|
||||||
// SpellAbility is removed from the stack here
|
// SpellAbility is removed from the stack here
|
||||||
@@ -544,7 +543,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
|||||||
private final void removeCardFromStack(final SpellAbility sa, final boolean fizzle) {
|
private final void removeCardFromStack(final SpellAbility sa, final boolean fizzle) {
|
||||||
Card source = sa.getHostCard();
|
Card source = sa.getHostCard();
|
||||||
|
|
||||||
|
|
||||||
if (sa.getHostCard().isCopiedSpell() || sa.isAbility()) {
|
if (sa.getHostCard().isCopiedSpell() || sa.isAbility()) {
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user