Huge cleanup: use collection interfaces (List, Set, Map) rather than

implementations (ArrayList etc.) in references to objects
This commit is contained in:
elcnesh
2015-05-17 11:28:21 +00:00
parent 6274c5379a
commit b3f38edef3
105 changed files with 521 additions and 436 deletions

View File

@@ -40,9 +40,9 @@ import java.util.Set;
*/
public class AiCardMemory {
private HashSet<Card> memMandatoryAttackers = new HashSet<Card>();
private HashSet<Card> memHeldManaSources = new HashSet<Card>();
private HashSet<Card> memAttachedThisTurn = new HashSet<Card>();
private Set<Card> memMandatoryAttackers = new HashSet<Card>();
private Set<Card> memHeldManaSources = new HashSet<Card>();
private Set<Card> memAttachedThisTurn = new HashSet<Card>();
//private HashSet<Card> memRevealedCards = new HashSet<Card>();
/**

View File

@@ -137,7 +137,7 @@ public class AiController {
simPicker = new SpellAbilityPicker(game, player);
}
private ArrayList<SpellAbility> getPossibleETBCounters() {
private List<SpellAbility> getPossibleETBCounters() {
final Player opp = player.getOpponent();
CardCollection all = new CardCollection(player.getCardsIn(ZoneType.Hand));
all.addAll(player.getCardsIn(ZoneType.Exile));
@@ -147,7 +147,7 @@ public class AiController {
}
all.addAll(opp.getCardsIn(ZoneType.Exile));
final ArrayList<SpellAbility> spellAbilities = new ArrayList<SpellAbility>();
final List<SpellAbility> spellAbilities = new ArrayList<SpellAbility>();
for (final Card c : all) {
for (final SpellAbility sa : c.getNonManaAbilities()) {
if (sa instanceof SpellPermanent) {
@@ -323,8 +323,8 @@ public class AiController {
return true;
}
private static ArrayList<SpellAbility> getPlayableCounters(final CardCollection l) {
final ArrayList<SpellAbility> spellAbility = new ArrayList<SpellAbility>();
private static List<SpellAbility> getPlayableCounters(final CardCollection l) {
final List<SpellAbility> spellAbility = new ArrayList<SpellAbility>();
for (final Card c : l) {
for (final SpellAbility sa : c.getNonManaAbilities()) {
// Check if this AF is a Counterpsell
@@ -482,7 +482,7 @@ public class AiController {
if (Iterables.any(landList, CardPredicates.Presets.BASIC_LANDS)) {
final CardCollectionView combined = player.getCardsIn(ZoneType.Battlefield);
final ArrayList<String> basics = new ArrayList<String>();
final List<String> basics = new ArrayList<String>();
// what types can I go get?
for (final String name : CardType.Constant.BASIC_TYPES) {
@@ -513,7 +513,7 @@ public class AiController {
}
// if return true, go to next phase
private SpellAbility chooseCounterSpell(final ArrayList<SpellAbility> possibleCounters) {
private SpellAbility chooseCounterSpell(final List<SpellAbility> possibleCounters) {
if (possibleCounters == null || possibleCounters.isEmpty()) {
return null;
}
@@ -562,7 +562,7 @@ public class AiController {
final CardCollectionView cards = handOnly ? player.getCardsIn(ZoneType.Hand) :
ComputerUtilAbility.getAvailableCards(game, player);
ArrayList<SpellAbility> all = ComputerUtilAbility.getSpellAbilities(cards, player);
List<SpellAbility> all = ComputerUtilAbility.getSpellAbilities(cards, player);
Collections.sort(all, saComparator); // put best spells first
for (final SpellAbility sa : ComputerUtilAbility.getOriginalAndAltCostAbilities(all, player)) {
@@ -1169,7 +1169,7 @@ public class AiController {
return result;
}
private SpellAbility chooseSpellAbilityToPlay(final ArrayList<SpellAbility> all, boolean skipCounter) {
private SpellAbility chooseSpellAbilityToPlay(final List<SpellAbility> all, boolean skipCounter) {
if (all == null || all.isEmpty())
return null;

View File

@@ -62,7 +62,7 @@ public class AiProfileUtil {
AI_PROFILE_DIR = aiProfileDir;
loadedProfiles.clear();
ArrayList<String> availableProfiles = getAvailableProfiles();
List<String> availableProfiles = getAvailableProfiles();
for (String profile : availableProfiles) {
loadedProfiles.put(profile, loadProfile(profile));
}
@@ -119,9 +119,9 @@ public class AiProfileUtil {
* @return ArrayList<String> - an array of strings containing all
* available profiles.
*/
public static ArrayList<String> getAvailableProfiles()
public static List<String> getAvailableProfiles()
{
final ArrayList<String> availableProfiles = new ArrayList<String>();
final List<String> availableProfiles = new ArrayList<String>();
final File dir = new File(AI_PROFILE_DIR);
final String[] children = dir.list();
@@ -144,8 +144,8 @@ public class AiProfileUtil {
* @return ArrayList<String> - an array list of strings containing all
* available profiles including special random profile tags.
*/
public static ArrayList<String> getProfilesDisplayList() {
final ArrayList<String> availableProfiles = new ArrayList<String>();
public static List<String> getProfilesDisplayList() {
final List<String> availableProfiles = new ArrayList<String>();
availableProfiles.add(AI_PROFILE_RANDOM_MATCH);
availableProfiles.add(AI_PROFILE_RANDOM_DUEL);
availableProfiles.addAll(getAvailableProfiles());

View File

@@ -27,9 +27,9 @@ import java.util.Random;
import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Predicate;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;
import forge.ai.ability.ProtectAi;
import forge.card.CardType;
@@ -1156,7 +1156,7 @@ public class ComputerUtil {
}
} else {
objects = topStack.getTargets().getTargets();
final ArrayList<GameObject> canBeTargeted = new ArrayList<GameObject>();
final List<GameObject> canBeTargeted = new ArrayList<GameObject>();
for (Object o : objects) {
if (o instanceof Card) {
final Card c = (Card) o;
@@ -1612,7 +1612,7 @@ public class ComputerUtil {
if (logic != null) {
if (logic.equals("MostNeededType")) {
// Choose a type that is in the deck, but not in hand or on the battlefield
final ArrayList<String> basics = new ArrayList<String>();
final List<String> basics = new ArrayList<String>();
basics.addAll(CardType.Constant.BASIC_TYPES);
CardCollectionView presentCards = CardCollection.combine(ai.getCardsIn(ZoneType.Battlefield), ai.getCardsIn(ZoneType.Hand));
CardCollectionView possibleCards = ai.getAllCards();
@@ -1666,7 +1666,7 @@ public class ComputerUtil {
return chosen;
}
public static Object vote(Player ai, List<Object> options, SpellAbility sa, ArrayListMultimap<Object, Player> votes) {
public static Object vote(Player ai, List<Object> options, SpellAbility sa, Multimap<Object, Player> votes) {
if (!sa.hasParam("AILogic")) {
return Aggregates.random(options);
} else {

View File

@@ -1,6 +1,7 @@
package forge.ai;
import java.util.ArrayList;
import java.util.List;
import forge.card.CardStateName;
import forge.game.Game;
@@ -12,7 +13,6 @@ import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType;
public class ComputerUtilAbility {
public static CardCollection getAvailableCards(final Game game, final Player player) {
CardCollection all = new CardCollection(player.getCardsIn(ZoneType.Hand));
@@ -29,8 +29,8 @@ public class ComputerUtilAbility {
return all;
}
public static ArrayList<SpellAbility> getSpellAbilities(final CardCollectionView l, final Player player) {
final ArrayList<SpellAbility> spellAbilities = new ArrayList<SpellAbility>();
public static List<SpellAbility> getSpellAbilities(final CardCollectionView l, final Player player) {
final List<SpellAbility> spellAbilities = new ArrayList<SpellAbility>();
for (final Card c : l) {
for (final SpellAbility sa : c.getSpellAbilities()) {
spellAbilities.add(sa);
@@ -44,8 +44,8 @@ public class ComputerUtilAbility {
return spellAbilities;
}
public static ArrayList<SpellAbility> getOriginalAndAltCostAbilities(final ArrayList<SpellAbility> originList, final Player player) {
final ArrayList<SpellAbility> newAbilities = new ArrayList<SpellAbility>();
public static List<SpellAbility> getOriginalAndAltCostAbilities(final List<SpellAbility> originList, final Player player) {
final List<SpellAbility> newAbilities = new ArrayList<SpellAbility>();
for (SpellAbility sa : originList) {
sa.setActivatingPlayer(player);
//add alternative costs as additional spell abilities
@@ -53,7 +53,7 @@ public class ComputerUtilAbility {
newAbilities.addAll(GameActionUtil.getAlternativeCosts(sa, player));
}
final ArrayList<SpellAbility> result = new ArrayList<SpellAbility>();
final List<SpellAbility> result = new ArrayList<SpellAbility>();
for (SpellAbility sa : newAbilities) {
sa.setActivatingPlayer(player);
result.addAll(GameActionUtil.getOptionalCosts(sa));

View File

@@ -1,5 +1,18 @@
package forge.ai;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.MutablePair;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
@@ -15,7 +28,15 @@ import forge.game.Game;
import forge.game.GameObject;
import forge.game.ability.AbilityUtils;
import forge.game.ability.ApiType;
import forge.game.card.*;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.card.CardCollectionView;
import forge.game.card.CardFactory;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CardLists;
import forge.game.card.CardPredicates;
import forge.game.card.CardUtil;
import forge.game.card.CounterType;
import forge.game.combat.Combat;
import forge.game.combat.CombatUtil;
import forge.game.phase.PhaseHandler;
@@ -30,13 +51,6 @@ import forge.item.PaperCard;
import forge.util.Aggregates;
import forge.util.MyRandom;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.MutablePair;
import org.apache.commons.lang3.tuple.Pair;
import java.util.*;
import java.util.Map.Entry;
public class ComputerUtilCard {
public static Card getMostExpensivePermanentAI(final CardCollectionView list, final SpellAbility spell, final boolean targeted) {
@@ -1153,7 +1167,7 @@ public class ComputerUtilCard {
Card pumped = CardFactory.copyCard(c, true);
pumped.setSickness(c.hasSickness());
final long timestamp = c.getGame().getNextTimestamp();
final ArrayList<String> kws = new ArrayList<String>();
final List<String> kws = new ArrayList<String>();
for (String kw : keywords) {
if (kw.startsWith("HIDDEN")) {
pumped.addHiddenExtrinsicKeyword(kw);

View File

@@ -2,6 +2,8 @@ package forge.ai;
import com.google.common.base.Predicate;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
import forge.card.ColorSet;
import forge.card.MagicColor;
@@ -133,7 +135,7 @@ public class ComputerUtilMana {
}
}
private static void sortManaAbilities(final ArrayListMultimap<ManaCostShard, SpellAbility> manaAbilityMap) {
private static void sortManaAbilities(final Multimap<ManaCostShard, SpellAbility> manaAbilityMap) {
final Map<Card, ManaProducingCard> manaCardMap = new HashMap<>();
final List<Card> orderedCards = new ArrayList<>();
@@ -162,7 +164,7 @@ public class ComputerUtilMana {
}
for (final ManaCostShard shard : manaAbilityMap.keySet()) {
final List<SpellAbility> abilities = manaAbilityMap.get(shard);
final Collection<SpellAbility> abilities = manaAbilityMap.get(shard);
final List<SpellAbility> newAbilities = new ArrayList<>(abilities);
if (DEBUG_MANA_PAYMENT) {
@@ -254,7 +256,7 @@ public class ComputerUtilMana {
}
// arrange all mana abilities by color produced.
final ArrayListMultimap<Integer, SpellAbility> manaAbilityMap = ComputerUtilMana.groupSourcesByManaColor(ai, true);
final ListMultimap<Integer, SpellAbility> manaAbilityMap = ComputerUtilMana.groupSourcesByManaColor(ai, true);
if (manaAbilityMap.isEmpty()) {
refundMana(manaSpentToPay, ai, sa);
@@ -263,7 +265,7 @@ public class ComputerUtilMana {
}
// select which abilities may be used for each shard
ArrayListMultimap<ManaCostShard, SpellAbility> sourcesForShards = ComputerUtilMana.groupAndOrderToPayShards(ai, manaAbilityMap, cost);
Multimap<ManaCostShard, SpellAbility> sourcesForShards = ComputerUtilMana.groupAndOrderToPayShards(ai, manaAbilityMap, cost);
sortManaAbilities(sourcesForShards);
@@ -321,7 +323,7 @@ public class ComputerUtilMana {
}
// arrange all mana abilities by color produced.
final ArrayListMultimap<Integer, SpellAbility> manaAbilityMap = ComputerUtilMana.groupSourcesByManaColor(ai, checkPlayable);
final ListMultimap<Integer, SpellAbility> manaAbilityMap = ComputerUtilMana.groupSourcesByManaColor(ai, checkPlayable);
if (manaAbilityMap.isEmpty()) {
refundMana(manaSpentToPay, ai, sa);
@@ -334,7 +336,7 @@ public class ComputerUtilMana {
}
// select which abilities may be used for each shard
ArrayListMultimap<ManaCostShard, SpellAbility> sourcesForShards = ComputerUtilMana.groupAndOrderToPayShards(ai, manaAbilityMap, cost);
ListMultimap<ManaCostShard, SpellAbility> sourcesForShards = ComputerUtilMana.groupAndOrderToPayShards(ai, manaAbilityMap, cost);
sortManaAbilities(sourcesForShards);
@@ -826,9 +828,9 @@ public class ComputerUtilMana {
* @param manaAbilityMap The map of SpellAbilities that produce mana.
* @return Were all mana sources found?
*/
private static ArrayListMultimap<ManaCostShard, SpellAbility> groupAndOrderToPayShards(final Player ai, final ArrayListMultimap<Integer, SpellAbility> manaAbilityMap,
private static ListMultimap<ManaCostShard, SpellAbility> groupAndOrderToPayShards(final Player ai, final ListMultimap<Integer, SpellAbility> manaAbilityMap,
final ManaCostBeingPaid cost) {
ArrayListMultimap<ManaCostShard, SpellAbility> res = ArrayListMultimap.create();
ListMultimap<ManaCostShard, SpellAbility> res = ArrayListMultimap.create();
if (cost.getColorlessManaAmount() > 0 && manaAbilityMap.containsKey(ManaAtom.COLORLESS)) {
res.putAll(ManaCostShard.COLORLESS, manaAbilityMap.get(ManaAtom.COLORLESS));
@@ -974,7 +976,7 @@ public class ComputerUtilMana {
int usableManaAbilities = 0;
boolean needsLimitedResources = false;
boolean producesAnyColor = false;
final ArrayList<SpellAbility> manaAbilities = getAIPlayableMana(card);
final List<SpellAbility> manaAbilities = getAIPlayableMana(card);
for (final SpellAbility m : manaAbilities) {
if (m.getManaPart().isAnyMana()) {
@@ -1044,8 +1046,8 @@ public class ComputerUtilMana {
} // getAvailableMana()
//This method is currently used by AI to estimate mana available
private static ArrayListMultimap<Integer, SpellAbility> groupSourcesByManaColor(final Player ai, boolean checkPlayable) {
final ArrayListMultimap<Integer, SpellAbility> manaMap = ArrayListMultimap.create();
private static ListMultimap<Integer, SpellAbility> groupSourcesByManaColor(final Player ai, boolean checkPlayable) {
final ListMultimap<Integer, SpellAbility> manaMap = ArrayListMultimap.create();
final Game game = ai.getGame();
List<ReplacementEffect> replacementEffects = new ArrayList<ReplacementEffect>();
@@ -1167,10 +1169,10 @@ public class ComputerUtilMana {
* getAIPlayableMana.
* </p>
*
* @return a {@link java.util.ArrayList} object.
* @return a {@link java.util.List} object.
*/
public static ArrayList<SpellAbility> getAIPlayableMana(Card c) {
final ArrayList<SpellAbility> res = new ArrayList<>();
public static List<SpellAbility> getAIPlayableMana(Card c) {
final List<SpellAbility> res = new ArrayList<>();
for (final SpellAbility a : c.getManaAbilities()) {
// if a mana ability has a mana cost the AI will miscalculate
// if there is a parent ability the AI can't use it

View File

@@ -6,6 +6,7 @@ import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -214,7 +215,7 @@ public abstract class GameState {
if (life > 0) p.setLife(life, null);
for (Entry<ZoneType, CardCollectionView> kv : playerCards.entrySet()) {
if (kv.getKey() == ZoneType.Battlefield) {
ArrayList<Card> cards = new ArrayList<Card>();
List<Card> cards = new ArrayList<Card>();
for (final Card c : kv.getValue()) {
if (c.isToken()) {
cards.add(c);

View File

@@ -3,8 +3,8 @@ package forge.ai;
import com.esotericsoftware.minlog.Log;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
import forge.LobbyPlayer;
@@ -356,7 +356,7 @@ public class PlayerControllerAi extends PlayerController {
}
@Override
public Object vote(SpellAbility sa, String prompt, List<Object> options, ArrayListMultimap<Object, Player> votes) {
public Object vote(SpellAbility sa, String prompt, List<Object> options, ListMultimap<Object, Player> votes) {
return ComputerUtil.vote(player, options, sa, votes);
}
@@ -599,7 +599,7 @@ public class PlayerControllerAi extends PlayerController {
}
@Override
public ReplacementEffect chooseSingleReplacementEffect(String prompt, List<ReplacementEffect> possibleReplacers, HashMap<String, Object> runParams) {
public ReplacementEffect chooseSingleReplacementEffect(String prompt, List<ReplacementEffect> possibleReplacers, Map<String, Object> runParams) {
// AI logic for choosing which replacement effect to apply
// happens here.
return possibleReplacers.get(0);

View File

@@ -290,17 +290,17 @@ public class AnimateAi extends SpellAbilityAi {
types.add(source.getChosenType());
}
final ArrayList<String> keywords = new ArrayList<String>();
final List<String> keywords = new ArrayList<String>();
if (sa.hasParam("Keywords")) {
keywords.addAll(Arrays.asList(sa.getParam("Keywords").split(" & ")));
}
final ArrayList<String> removeKeywords = new ArrayList<String>();
final List<String> removeKeywords = new ArrayList<String>();
if (sa.hasParam("RemoveKeywords")) {
removeKeywords.addAll(Arrays.asList(sa.getParam("RemoveKeywords").split(" & ")));
}
final ArrayList<String> hiddenKeywords = new ArrayList<String>();
final List<String> hiddenKeywords = new ArrayList<String>();
if (sa.hasParam("HiddenKeywords")) {
hiddenKeywords.addAll(Arrays.asList(sa.getParam("HiddenKeywords").split(" & ")));
}
@@ -327,31 +327,31 @@ public class AnimateAi extends SpellAbilityAi {
final String finalDesc = tmpDesc;
// abilities to add to the animated being
final ArrayList<String> abilities = new ArrayList<String>();
final List<String> abilities = new ArrayList<String>();
if (sa.hasParam("Abilities")) {
abilities.addAll(Arrays.asList(sa.getParam("Abilities").split(",")));
}
// replacement effects to add to the animated being
final ArrayList<String> replacements = new ArrayList<String>();
final List<String> replacements = new ArrayList<String>();
if (sa.hasParam("Replacements")) {
replacements.addAll(Arrays.asList(sa.getParam("Replacements").split(",")));
}
// triggers to add to the animated being
final ArrayList<String> triggers = new ArrayList<String>();
final List<String> triggers = new ArrayList<String>();
if (sa.hasParam("Triggers")) {
triggers.addAll(Arrays.asList(sa.getParam("Triggers").split(",")));
}
// static abilities to add to the animated being
final ArrayList<String> stAbs = new ArrayList<String>();
final List<String> stAbs = new ArrayList<String>();
if (sa.hasParam("staticAbilities")) {
stAbs.addAll(Arrays.asList(sa.getParam("staticAbilities").split(",")));
}
// sVars to add to the animated being
final ArrayList<String> sVars = new ArrayList<String>();
final List<String> sVars = new ArrayList<String>();
if (sa.hasParam("sVars")) {
sVars.addAll(Arrays.asList(sa.getParam("sVars").split(",")));
}
@@ -413,7 +413,7 @@ public class AnimateAi extends SpellAbilityAi {
//back to duplicating AnimateEffect.resolve
//TODO will all these abilities/triggers/replacements/etc. lead to memory leaks or unintended effects?
// remove abilities
final ArrayList<SpellAbility> removedAbilities = new ArrayList<SpellAbility>();
final List<SpellAbility> removedAbilities = new ArrayList<SpellAbility>();
boolean clearAbilities = sa.hasParam("OverwriteAbilities");
boolean clearSpells = sa.hasParam("OverwriteSpells");
boolean removeAll = sa.hasParam("RemoveAllAbilities");
@@ -429,7 +429,7 @@ public class AnimateAi extends SpellAbilityAi {
}
// give abilities
final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
final List<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
if (abilities.size() > 0) {
for (final String s : abilities) {
final String actualAbility = source.getSVar(s);
@@ -440,7 +440,7 @@ public class AnimateAi extends SpellAbilityAi {
}
// Grant triggers
final ArrayList<Trigger> addedTriggers = new ArrayList<Trigger>();
final List<Trigger> addedTriggers = new ArrayList<Trigger>();
if (triggers.size() > 0) {
for (final String s : triggers) {
final String actualTrigger = source.getSVar(s);
@@ -450,7 +450,7 @@ public class AnimateAi extends SpellAbilityAi {
}
// give replacement effects
final ArrayList<ReplacementEffect> addedReplacements = new ArrayList<ReplacementEffect>();
final List<ReplacementEffect> addedReplacements = new ArrayList<ReplacementEffect>();
if (replacements.size() > 0) {
for (final String s : replacements) {
final String actualReplacement = source.getSVar(s);
@@ -460,7 +460,7 @@ public class AnimateAi extends SpellAbilityAi {
}
// suppress triggers from the animated card
final ArrayList<Trigger> removedTriggers = new ArrayList<Trigger>();
final List<Trigger> removedTriggers = new ArrayList<Trigger>();
if (sa.hasParam("OverwriteTriggers") || removeAll) {
final FCollectionView<Trigger> triggersToRemove = card.getTriggers();
for (final Trigger trigger : triggersToRemove) {
@@ -498,7 +498,7 @@ public class AnimateAi extends SpellAbilityAi {
}
// suppress static abilities from the animated card
final ArrayList<StaticAbility> removedStatics = new ArrayList<StaticAbility>();
final List<StaticAbility> removedStatics = new ArrayList<StaticAbility>();
if (sa.hasParam("OverwriteStatics") || removeAll) {
final FCollectionView<StaticAbility> staticsToRemove = card.getStaticAbilities();
for (final StaticAbility stAb : staticsToRemove) {
@@ -508,7 +508,7 @@ public class AnimateAi extends SpellAbilityAi {
}
// suppress static abilities from the animated card
final ArrayList<ReplacementEffect> removedReplacements = new ArrayList<ReplacementEffect>();
final List<ReplacementEffect> removedReplacements = new ArrayList<ReplacementEffect>();
if (sa.hasParam("OverwriteReplacements") || removeAll) {
for (final ReplacementEffect re : card.getReplacementEffects()) {
re.setTemporarilySuppressed(true);

View File

@@ -564,7 +564,7 @@ public class AttachAi extends SpellAbilityAi {
int totToughness = 0;
int totPower = 0;
final ArrayList<String> keywords = new ArrayList<String>();
final List<String> keywords = new ArrayList<String>();
for (final StaticAbility stAbility : attachSource.getStaticAbilities()) {
final Map<String, String> stabMap = stAbility.getMapParams();
@@ -860,7 +860,7 @@ public class AttachAi extends SpellAbilityAi {
int totToughness = 0;
int totPower = 0;
final ArrayList<String> keywords = new ArrayList<String>();
final List<String> keywords = new ArrayList<String>();
boolean grantingAbilities = false;
for (final StaticAbility stAbility : attachSource.getStaticAbilities()) {
@@ -1169,7 +1169,7 @@ public class AttachAi extends SpellAbilityAi {
* @param sa SpellAbility
* @return true, if successful
*/
private static boolean containsUsefulCurseKeyword(final ArrayList<String> keywords, final Card card, final SpellAbility sa) {
private static boolean containsUsefulCurseKeyword(final List<String> keywords, final Card card, final SpellAbility sa) {
for (final String keyword : keywords) {
if (isUsefulCurseKeyword(keyword, card, sa)) {
return true;

View File

@@ -465,7 +465,7 @@ public class ChangeZoneAi extends SpellAbilityAi {
*/
private static Card basicManaFixing(final Player ai, final List<Card> list) { // Search for a Basic Land
final CardCollectionView combined = CardCollection.combine(ai.getCardsIn(ZoneType.Battlefield), ai.getCardsIn(ZoneType.Hand));
final ArrayList<String> basics = new ArrayList<String>();
final List<String> basics = new ArrayList<String>();
// what types can I go get?
for (final String name : MagicColor.Constant.BASIC_LANDS) {

View File

@@ -1,8 +1,17 @@
package forge.ai.ability;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.google.common.base.Predicate;
import forge.ai.*;
import forge.ai.AiAttackController;
import forge.ai.ComputerUtil;
import forge.ai.ComputerUtilCard;
import forge.ai.ComputerUtilCombat;
import forge.ai.ComputerUtilCost;
import forge.ai.SpellAbilityAi;
import forge.card.MagicColor;
import forge.game.Game;
import forge.game.ability.AbilityUtils;
@@ -21,13 +30,9 @@ import forge.game.spellability.TargetRestrictions;
import forge.game.zone.ZoneType;
import forge.util.MyRandom;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class ProtectAi extends SpellAbilityAi {
private static boolean hasProtectionFrom(final Card card, final String color) {
final ArrayList<String> onlyColors = new ArrayList<String>(MagicColor.Constant.ONLY_COLORS);
final List<String> onlyColors = new ArrayList<String>(MagicColor.Constant.ONLY_COLORS);
// make sure we have a valid color
if (!onlyColors.contains(color)) {

View File

@@ -26,7 +26,7 @@ public class GameSimulator {
private Game simGame;
private Player aiPlayer;
private GameStateEvaluator eval;
private ArrayList<String> origLines;
private List<String> origLines;
private Score origScore;
public GameSimulator(final SimulationController controller, final Game origGame, final Player origAiPlayer) {
@@ -44,7 +44,7 @@ public class GameSimulator {
origScore = eval.getScoreForGameState(origGame, origAiPlayer);
eval.setDebugging(true);
ArrayList<String> simLines = new ArrayList<String>();
List<String> simLines = new ArrayList<String>();
debugLines = simLines;
Score simScore = eval.getScoreForGameState(simGame, aiPlayer);
if (!simScore.equals(origScore)) {
@@ -102,7 +102,7 @@ public class GameSimulator {
}
public static boolean debugPrint;
public static ArrayList<String> debugLines;
public static List<String> debugLines;
public static void debugPrint(String str) {
if (debugPrint) {
System.out.println(str);
@@ -172,7 +172,7 @@ public class GameSimulator {
// TODO: If this is during combat, before blockers are declared,
// we should simulate how combat will resolve and evaluate that
// state instead!
ArrayList<String> simLines = null;
List<String> simLines = null;
if (debugPrint) {
debugPrint("SimGame:");
simLines = new ArrayList<String>();
@@ -190,7 +190,7 @@ public class GameSimulator {
controller.push(sa);
SpellAbilityPicker sim = new SpellAbilityPicker(simGame, aiPlayer);
CardCollection cards = ComputerUtilAbility.getAvailableCards(simGame, aiPlayer);
ArrayList<SpellAbility> all = ComputerUtilAbility.getSpellAbilities(cards, aiPlayer);
List<SpellAbility> all = ComputerUtilAbility.getSpellAbilities(cards, aiPlayer);
SpellAbility nextSa = sim.chooseSpellAbilityToPlay(controller, all, true);
if (nextSa != null) {
score = sim.getScoreForChosenAbility();

View File

@@ -32,7 +32,7 @@ public class SpellAbilityPicker {
}
}
public SpellAbility chooseSpellAbilityToPlay(SimulationController controller, final ArrayList<SpellAbility> all, boolean skipCounter) {
public SpellAbility chooseSpellAbilityToPlay(SimulationController controller, final List<SpellAbility> all, boolean skipCounter) {
printOutput = false;
if (controller == null) {
controller = new SimulationController();
@@ -40,7 +40,7 @@ public class SpellAbilityPicker {
}
print("---- choose ability (phase = " + game.getPhaseHandler().getPhase() + ")");
ArrayList<SpellAbility> candidateSAs = new ArrayList<>();
List<SpellAbility> candidateSAs = new ArrayList<>();
for (final SpellAbility sa : ComputerUtilAbility.getOriginalAndAltCostAbilities(all, player)) {
// Don't add Counterspells to the "normal" playcard lookups
if (skipCounter && sa.getApi() == ApiType.Counter) {

View File

@@ -223,7 +223,7 @@ public class BoosterGenerator {
} else if (operator.startsWith("fromSheet(") && invert) {
String sheetName = StringUtils.strip(operator.substring(9), "()\" ");
Iterable<PaperCard> src = StaticData.instance().getPrintSheets().get(sheetName).toFlatList();
ArrayList<String> cardNames = Lists.newArrayList();
List<String> cardNames = Lists.newArrayList();
for (PaperCard card : src) {
cardNames.add(card.getName());
}

View File

@@ -22,6 +22,7 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.lang3.Range;
import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -50,7 +51,7 @@ public enum DeckFormat {
Limited ( Range.between(40, Integer.MAX_VALUE), null, Integer.MAX_VALUE),
Commander ( Range.is(99), Range.between(0, 10), 1),
TinyLeaders ( Range.is(49), Range.between(0, 10), 1, new Predicate<CardRules>() {
private final HashSet<String> bannedCards = new HashSet<String>(Arrays.asList(
private final Set<String> bannedCards = new HashSet<String>(Arrays.asList(
"Ancestral Recall", "Balance", "Black Lotus", "Black Vise", "Channel", "Chaos Orb", "Contract From Below", "Counterbalance", "Darkpact", "Demonic Attorney", "Demonic Tutor", "Earthcraft", "Edric, Spymaster of Trest", "Falling Star",
"Fastbond", "Flash", "Goblin Recruiter", "Hermit Druid", "Imperial Seal", "Jeweled Bird", "Karakas", "Library of Alexandria", "Mana Crypt", "Mana Drain", "Mana Vault", "Metalworker", "Mind Twist", "Mishra's Workshop", "Mox Emerald",
"Mox Jet", "Mox Pearl", "Mox Ruby", "Mox Sapphire", "Necropotence", "Painter's Servant", "Shahrazad", "Skullclamp", "Sol Ring", "Strip Mine", "Survival of the Fittest", "Sword of Body and Mind", "Time Vault", "Time Walk", "Timetwister",

View File

@@ -1,6 +1,7 @@
package forge.deck.generation;
import java.util.HashMap;
import java.util.Map;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
@@ -8,7 +9,7 @@ import com.google.common.collect.Iterables;
import forge.item.PaperCard;
public class DeckGenPool implements IDeckGenPool {
private final HashMap<String, PaperCard> cards = new HashMap<String, PaperCard>();
private final Map<String, PaperCard> cards = new HashMap<String, PaperCard>();
public DeckGenPool() {
}

View File

@@ -1,41 +1,41 @@
package forge.util;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import com.google.common.base.Supplier;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
public final class CollectionSuppliers {
/**
* TODO: Write javadoc for this type.
*
*/
public abstract class CollectionSuppliers {
/**
* Private constructor to prevent instantiation.
*/
private CollectionSuppliers() {
}
public static <T> Supplier<ArrayList<T>> arrayLists() {
return new Supplier<ArrayList<T>>() {
@Override
public ArrayList<T> get() {
return new ArrayList<T>();
public static <T> Supplier<List<T>> arrayLists() {
return new Supplier<List<T>>() {
@Override public List<T> get() {
return Lists.newArrayList();
}
};
}
public static <T> Supplier<HashSet<T>> hashSets() {
return new Supplier<HashSet<T>>() {
@Override
public HashSet<T> get() {
return new HashSet<T>();
public static <T> Supplier<Set<T>> hashSets() {
return new Supplier<Set<T>>() {
@Override public Set<T> get() {
return Sets.newHashSet();
}
};
}
public static <T extends Comparable<T>> Supplier<TreeSet<T>> treeSets() {
return new Supplier<TreeSet<T>>() {
@Override
public TreeSet<T> get() {
return new TreeSet<T>();
public static <T extends Comparable<T>> Supplier<SortedSet<T>> treeSets() {
return new Supplier<SortedSet<T>>() {
@Override public SortedSet<T> get() {
return Sets.newTreeSet();
}
};
}

View File

@@ -234,7 +234,7 @@ public final class FileUtil {
* @return list of strings
*/
public static List<String> readAllLines(final Reader reader, final boolean mayTrim) {
final ArrayList<String> list = new ArrayList<String>();
final List<String> list = new ArrayList<String>();
try {
final BufferedReader in = new BufferedReader(reader);
String line;

View File

@@ -1414,13 +1414,13 @@ public class GameAction {
// Power Play - Each player with a Power Play in the CommandZone becomes the Starting Player
Set<Player> powerPlayers = new HashSet<>();
for (Card c : game.getCardsIn(ZoneType.Command)) {
if (c.getName().equals("Power Play")) {
powerPlayers.add(c.getOwner());
}
if (c.getName().equals("Power Play")) {
powerPlayers.add(c.getOwner());
}
}
if (!powerPlayers.isEmpty()) {
ArrayList<Player> players = Lists.newArrayList(powerPlayers);
List<Player> players = Lists.newArrayList(powerPlayers);
Collections.shuffle(players);
return players.get(0);
}

View File

@@ -450,9 +450,9 @@ public final class GameActionUtil {
* @return an ArrayList<SpellAbility>.
* get abilities with all Splice options
*/
private static final ArrayList<SpellAbility> getSpliceAbilities(SpellAbility sa) {
ArrayList<SpellAbility> newSAs = new ArrayList<SpellAbility>();
ArrayList<SpellAbility> allSaCombinations = new ArrayList<SpellAbility>();
private static final List<SpellAbility> getSpliceAbilities(SpellAbility sa) {
List<SpellAbility> newSAs = new ArrayList<SpellAbility>();
List<SpellAbility> allSaCombinations = new ArrayList<SpellAbility>();
allSaCombinations.add(sa);
Card source = sa.getHostCard();

View File

@@ -32,7 +32,7 @@ public abstract class GameEntity extends GameObject implements IIdentifiable {
private String name = "";
private int preventNextDamage = 0;
private CardCollection enchantedBy;
private TreeMap<Card, Map<String, String>> preventionShieldsWithEffects = new TreeMap<Card, Map<String, String>>();
private Map<Card, Map<String, String>> preventionShieldsWithEffects = new TreeMap<Card, Map<String, String>>();
protected GameEntity(int id0) {
id = id0;
@@ -97,7 +97,7 @@ public abstract class GameEntity extends GameObject implements IIdentifiable {
}
// PreventNextDamageWithEffect
public TreeMap<Card, Map<String, String>> getPreventNextDamageWithEffect() {
public Map<Card, Map<String, String>> getPreventNextDamageWithEffect() {
return preventionShieldsWithEffects;
}
public int getPreventNextDamageTotalShields() {
@@ -112,7 +112,7 @@ public abstract class GameEntity extends GameObject implements IIdentifiable {
* @param shieldSource - The source card which generated the shield
* @param effectMap - A map of the effect occurring with the damage prevention
*/
public void addPreventNextDamageWithEffect(final Card shieldSource, TreeMap<String, String> effectMap) {
public void addPreventNextDamageWithEffect(final Card shieldSource, Map<String, String> effectMap) {
if (preventionShieldsWithEffects.containsKey(shieldSource)) {
int currentShields = Integer.valueOf(preventionShieldsWithEffects.get(shieldSource).get("ShieldAmount"));
currentShields += Integer.valueOf(effectMap.get("ShieldAmount"));

View File

@@ -1,22 +1,36 @@
package forge.game;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import com.google.common.eventbus.Subscribe;
import forge.LobbyPlayer;
import forge.game.card.Card;
import forge.game.event.*;
import forge.game.event.GameEvent;
import forge.game.event.GameEventAttackersDeclared;
import forge.game.event.GameEventBlockersDeclared;
import forge.game.event.GameEventCardDamaged;
import forge.game.event.GameEventCardDamaged.DamageType;
import forge.game.event.GameEventGameOutcome;
import forge.game.event.GameEventLandPlayed;
import forge.game.event.GameEventMulligan;
import forge.game.event.GameEventPlayerControl;
import forge.game.event.GameEventPlayerDamaged;
import forge.game.event.GameEventPlayerPoisoned;
import forge.game.event.GameEventScry;
import forge.game.event.GameEventSpellAbilityCast;
import forge.game.event.GameEventSpellResolved;
import forge.game.event.GameEventTurnBegan;
import forge.game.event.GameEventTurnPhase;
import forge.game.event.IGameEventVisitor;
import forge.game.player.Player;
import forge.game.spellability.TargetChoices;
import forge.game.zone.ZoneType;
import forge.util.Lang;
import forge.util.maps.MapOfLists;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
private final GameLog log;
@@ -68,7 +82,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
if (event.sa.getTargetRestrictions() != null) {
sb.append(" targeting ");
ArrayList<TargetChoices> targets = event.sa.getAllTargetChoices();
List<TargetChoices> targets = event.sa.getAllTargetChoices();
// Include the TargetChoices from the stack instance, since the real target choices
// are on that object at this point (see SpellAbilityStackInstance constructor).
targets.add(event.si.getTargetChoices());

View File

@@ -14,37 +14,37 @@ public abstract class GameObjectMap {
public abstract GameObject map(GameObject o);
public Player map(Player p) {
public Player map(final Player p) {
return (Player) map((GameObject) p);
}
public Card map(Card c) {
public Card map(final Card c) {
return (Card) map((GameObject) c);
}
public GameEntity map(GameEntity e) {
public GameEntity map(final GameEntity e) {
return (GameEntity) map((GameObject) e);
}
public CardCollectionView mapCollection(CardCollectionView cards) {
CardCollection collection = new CardCollection();
for (Card c : cards) {
public CardCollectionView mapCollection(final CardCollectionView cards) {
final CardCollection collection = new CardCollection();
for (final Card c : cards) {
collection.add(map(c));
}
return collection;
}
@SuppressWarnings("unchecked")
public <T extends GameObject> List<T> mapList(List<T> objects) {
ArrayList<T> result = new ArrayList<T>();
for (T o : objects) {
public <T extends GameObject> List<T> mapList(final List<T> objects) {
final List<T> result = new ArrayList<T>();
for (final T o : objects) {
result.add((T) map(o));
}
return result;
}
public <K extends GameObject, V> void fillKeyedMap(Map<K, V> dest, Map<K, V> src) {
for (Map.Entry<K, V> entry : src.entrySet()) {
public <K extends GameObject, V> void fillKeyedMap(final Map<K, V> dest, final Map<K, V> src) {
for (final Map.Entry<K, V> entry : src.entrySet()) {
dest.put(entry.getKey(), entry.getValue());
}
}

View File

@@ -181,7 +181,7 @@ public class StaticEffect {
* @param c
* a {@link forge.game.card.Card} object.
* @param s
* a {@link java.util.ArrayList} object.
* a {@link java.util.List} object.
*/
public final void addOriginalAbilities(final Card c, final List<SpellAbility> s) {
final List<SpellAbility> list = new ArrayList<SpellAbility>(s);
@@ -200,10 +200,10 @@ public class StaticEffect {
*
* @param c
* a {@link forge.game.card.Card} object.
* @return a {@link java.util.ArrayList} object.
* @return a {@link java.util.List} object.
*/
public final ArrayList<SpellAbility> getOriginalAbilities(final Card c) {
final ArrayList<SpellAbility> returnList = new ArrayList<SpellAbility>();
public final List<SpellAbility> getOriginalAbilities(final Card c) {
final List<SpellAbility> returnList = new ArrayList<SpellAbility>();
if (this.originalAbilities.containsKey(c)) {
returnList.addAll(this.originalAbilities.get(c));
}
@@ -566,7 +566,7 @@ public class StaticEffect {
*/
public final void addType(final Card c, final String s) {
if (!this.types.containsKey(c)) {
final ArrayList<String> list = new ArrayList<String>();
final List<String> list = new ArrayList<String>();
list.add(s);
this.types.put(c, list);
} else {
@@ -581,10 +581,10 @@ public class StaticEffect {
*
* @param c
* a {@link forge.game.card.Card} object.
* @return a {@link java.util.ArrayList} object.
* @return a {@link java.util.List} object.
*/
public final ArrayList<String> getTypes(final Card c) {
final ArrayList<String> returnList = new ArrayList<String>();
public final List<String> getTypes(final Card c) {
final List<String> returnList = new ArrayList<String>();
if (this.types.containsKey(c)) {
returnList.addAll(this.types.get(c));
}
@@ -749,7 +749,7 @@ public class StaticEffect {
* @param list
* the new affected players
*/
public final void setAffectedPlayers(final ArrayList<Player> list) {
public final void setAffectedPlayers(final List<Player> list) {
this.affectedPlayers = list;
}

View File

@@ -69,17 +69,17 @@ public class AnimateAllEffect extends AnimateEffectBase {
types.add(host.getChosenType());
}
final ArrayList<String> keywords = new ArrayList<String>();
final List<String> keywords = new ArrayList<String>();
if (sa.hasParam("Keywords")) {
keywords.addAll(Arrays.asList(sa.getParam("Keywords").split(" & ")));
}
final ArrayList<String> removeKeywords = new ArrayList<String>();
final List<String> removeKeywords = new ArrayList<String>();
if (sa.hasParam("RemoveKeywords")) {
removeKeywords.addAll(Arrays.asList(sa.getParam("RemoveKeywords").split(" & ")));
}
final ArrayList<String> hiddenKeywords = new ArrayList<String>();
final List<String> hiddenKeywords = new ArrayList<String>();
if (sa.hasParam("HiddenKeywords")) {
hiddenKeywords.addAll(Arrays.asList(sa.getParam("HiddenKeywords").split(" & ")));
}
@@ -105,23 +105,23 @@ public class AnimateAllEffect extends AnimateEffectBase {
final String finalDesc = tmpDesc;
// abilities to add to the animated being
final ArrayList<String> abilities = new ArrayList<String>();
final List<String> abilities = new ArrayList<String>();
if (sa.hasParam("Abilities")) {
abilities.addAll(Arrays.asList(sa.getParam("Abilities").split(",")));
}
// replacement effects to add to the animated being
final ArrayList<String> replacements = new ArrayList<String>();
final List<String> replacements = new ArrayList<String>();
if (sa.hasParam("Replacements")) {
replacements.addAll(Arrays.asList(sa.getParam("Replacements").split(",")));
}
// triggers to add to the animated being
final ArrayList<String> triggers = new ArrayList<String>();
final List<String> triggers = new ArrayList<String>();
if (sa.hasParam("Triggers")) {
triggers.addAll(Arrays.asList(sa.getParam("Triggers").split(",")));
}
// sVars to add to the animated being
final ArrayList<String> sVars = new ArrayList<String>();
final List<String> sVars = new ArrayList<String>();
if (sa.hasParam("sVars")) {
sVars.addAll(Arrays.asList(sa.getParam("sVars").split(",")));
}
@@ -149,7 +149,7 @@ public class AnimateAllEffect extends AnimateEffectBase {
keywords, removeKeywords, hiddenKeywords, timestamp);
// give abilities
final ArrayList<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
final List<SpellAbility> addedAbilities = new ArrayList<SpellAbility>();
if (abilities.size() > 0) {
for (final String s : abilities) {
final String actualAbility = host.getSVar(s);
@@ -160,7 +160,7 @@ public class AnimateAllEffect extends AnimateEffectBase {
}
// remove abilities
final ArrayList<SpellAbility> removedAbilities = new ArrayList<SpellAbility>();
final List<SpellAbility> removedAbilities = new ArrayList<SpellAbility>();
if (sa.hasParam("OverwriteAbilities") || sa.hasParam("RemoveAllAbilities")) {
for (final SpellAbility ab : c.getSpellAbilities()) {
if (ab.isAbility()) {
@@ -170,7 +170,7 @@ public class AnimateAllEffect extends AnimateEffectBase {
}
}
// give replacement effects
final ArrayList<ReplacementEffect> addedReplacements = new ArrayList<ReplacementEffect>();
final List<ReplacementEffect> addedReplacements = new ArrayList<ReplacementEffect>();
if (replacements.size() > 0) {
for (final String s : replacements) {
final String actualReplacement = host.getSVar(s);
@@ -179,7 +179,7 @@ public class AnimateAllEffect extends AnimateEffectBase {
}
}
// Grant triggers
final ArrayList<Trigger> addedTriggers = new ArrayList<Trigger>();
final List<Trigger> addedTriggers = new ArrayList<Trigger>();
if (triggers.size() > 0) {
for (final String s : triggers) {
final String actualTrigger = host.getSVar(s);
@@ -189,7 +189,7 @@ public class AnimateAllEffect extends AnimateEffectBase {
}
// suppress triggers from the animated card
final ArrayList<Trigger> removedTriggers = new ArrayList<Trigger>();
final List<Trigger> removedTriggers = new ArrayList<Trigger>();
if (sa.hasParam("OverwriteTriggers") || sa.hasParam("RemoveAllAbilities")) {
final FCollectionView<Trigger> triggersToRemove = c.getTriggers();
for (final Trigger trigger : triggersToRemove) {
@@ -199,7 +199,7 @@ public class AnimateAllEffect extends AnimateEffectBase {
}
// suppress static abilities from the animated card
final ArrayList<StaticAbility> removedStatics = new ArrayList<StaticAbility>();
final List<StaticAbility> removedStatics = new ArrayList<StaticAbility>();
if (sa.hasParam("OverwriteStatics") || sa.hasParam("RemoveAllAbilities")) {
final FCollectionView<StaticAbility> staticsToRemove = c.getStaticAbilities();
for (final StaticAbility stAb : staticsToRemove) {

View File

@@ -202,7 +202,7 @@ public class CloneEffect extends SpellAbilityEffect {
}
// triggers to add to clone
final ArrayList<String> triggers = new ArrayList<String>();
final List<String> triggers = new ArrayList<String>();
if (sa.hasParam("AddTriggers")) {
triggers.addAll(Arrays.asList(sa.getParam("AddTriggers").split(",")));
for (final String s : triggers) {
@@ -237,7 +237,7 @@ public class CloneEffect extends SpellAbilityEffect {
}
// keywords to add to clone
final ArrayList<String> keywords = new ArrayList<String>();
final List<String> keywords = new ArrayList<String>();
if (sa.hasParam("AddKeywords")) {
keywords.addAll(Arrays.asList(sa.getParam("AddKeywords").split(" & ")));
// allow SVar substitution for keywords

View File

@@ -56,7 +56,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
public void resolve(final SpellAbility sa) {
final Card hostCard = sa.getHostCard();
final Game game = hostCard.getGame();
final ArrayList<String> keywords = new ArrayList<String>();
final List<String> keywords = new ArrayList<String>();
final List<String> types = new ArrayList<String>();
final List<String> svars = new ArrayList<String>();
final List<String> triggers = new ArrayList<String>();

View File

@@ -101,7 +101,7 @@ public class CountersMoveEffect extends SpellAbilityEffect {
while (cntToMove > 0 && source.hasCounters()) {
final Map<CounterType, Integer> tgtCounters = source.getCounters();
final ArrayList<CounterType> typeChoices = new ArrayList<CounterType>();
final List<CounterType> typeChoices = new ArrayList<CounterType>();
// get types of counters
for (CounterType ct : tgtCounters.keySet()) {
if (ct != CounterType.M1M1 || canPlaceM1M1Counters) {

View File

@@ -1,5 +1,10 @@
package forge.game.ability.effects;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import forge.game.GameObject;
import forge.game.ability.AbilityUtils;
import forge.game.ability.SpellAbilityEffect;
@@ -8,10 +13,6 @@ import forge.game.card.CardUtil;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;
public class DamagePreventEffect extends SpellAbilityEffect {
@Override
@@ -68,7 +69,7 @@ public class DamagePreventEffect extends SpellAbilityEffect {
int numDam = AbilityUtils.calculateAmount(host, sa.getParam("Amount"), sa);
final List<GameObject> tgts = getTargets(sa);
final ArrayList<Card> untargetedCards = new ArrayList<Card>();
final List<Card> untargetedCards = new ArrayList<Card>();
if (sa.hasParam("Radiance") && (sa.usesTargeting())) {
Card origin = null;
@@ -95,7 +96,7 @@ public class DamagePreventEffect extends SpellAbilityEffect {
final Card c = (Card) o;
if (c.isInPlay() && (!targeted || c.canBeTargetedBy(sa))) {
if (preventionWithEffect) {
TreeMap<String, String> effectMap = new TreeMap<String, String>();
Map<String, String> effectMap = new TreeMap<String, String>();
effectMap.put("EffectString", sa.getSVar(sa.getParam("PreventionSubAbility")));
effectMap.put("ShieldAmount", String.valueOf(numDam));
if (sa.hasParam("ShieldEffectTarget")) {
@@ -122,7 +123,7 @@ public class DamagePreventEffect extends SpellAbilityEffect {
final Player p = (Player) o;
if (!targeted || p.canBeTargetedBy(sa)) {
if (preventionWithEffect) {
TreeMap<String, String> effectMap = new TreeMap<String, String>();
Map<String, String> effectMap = new TreeMap<String, String>();
effectMap.put("EffectString", sa.getSVar(sa.getParam("PreventionSubAbility")));
effectMap.put("ShieldAmount", String.valueOf(numDam));
if (sa.hasParam("ShieldEffectTarget")) {

View File

@@ -63,7 +63,7 @@ public class DebuffEffect extends SpellAbilityEffect {
final long timestamp = game.getNextTimestamp();
for (final Card tgtC : getTargetCards(sa)) {
final ArrayList<String> hadIntrinsic = new ArrayList<String>();
final List<String> hadIntrinsic = new ArrayList<String>();
if (tgtC.isInPlay() && tgtC.canBeTargetedBy(sa)) {
if (sa.hasParam("AllSuffixKeywords")) {
String suffix = sa.getParam("AllSuffixKeywords");

View File

@@ -73,7 +73,7 @@ public class DestroyEffect extends SpellAbilityEffect {
final boolean sac = sa.hasParam("Sacrifice");
final List<Card> tgtCards = getTargetCards(sa);
final ArrayList<Card> untargetedCards = new ArrayList<Card>();
final List<Card> untargetedCards = new ArrayList<Card>();
final TargetRestrictions tgt = sa.getTargetRestrictions();

View File

@@ -75,7 +75,7 @@ public class DigEffect extends SpellAbilityEffect {
boolean changeAll = false;
boolean allButOne = false;
final ArrayList<String> keywords = new ArrayList<String>();
final List<String> keywords = new ArrayList<String>();
if (sa.hasParam("Keywords")) {
keywords.addAll(Arrays.asList(sa.getParam("Keywords").split(" & ")));
}

View File

@@ -16,7 +16,6 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class ProtectEffect extends SpellAbilityEffect {
/* (non-Javadoc)
@@ -122,7 +121,7 @@ public class ProtectEffect extends SpellAbilityEffect {
}
}
final ArrayList<Card> untargetedCards = new ArrayList<Card>();
final List<Card> untargetedCards = new ArrayList<Card>();
final TargetRestrictions tgt = sa.getTargetRestrictions();
if (sa.hasParam("Radiance") && (tgt != null)) {
@@ -205,7 +204,7 @@ public class ProtectEffect extends SpellAbilityEffect {
public static List<String> getProtectionList(final SpellAbility sa) {
final ArrayList<String> gains = new ArrayList<String>();
final List<String> gains = new ArrayList<String>();
final String gainStr = sa.getParam("Gains");
if (gainStr.equals("Choice")) {

View File

@@ -19,12 +19,12 @@ import java.util.List;
public class PumpAllEffect extends SpellAbilityEffect {
private static void applyPumpAll(final SpellAbility sa,
final List<Card> list, final int a, final int d,
final List<String> keywords, final ArrayList<ZoneType> affectedZones) {
final List<String> keywords, final List<ZoneType> affectedZones) {
final Game game = sa.getActivatingPlayer().getGame();
final long timestamp = game.getNextTimestamp();
final ArrayList<String> kws = new ArrayList<String>();
final ArrayList<String> hiddenkws = new ArrayList<String>();
final List<String> kws = new ArrayList<String>();
final List<String> hiddenkws = new ArrayList<String>();
boolean suspend = false;
for (String kw : keywords) {
@@ -124,7 +124,7 @@ public class PumpAllEffect extends SpellAbilityEffect {
@Override
public void resolve(final SpellAbility sa) {
final List<Player> tgtPlayers = getTargetPlayers(sa);
final ArrayList<ZoneType> affectedZones = new ArrayList<ZoneType>();
final List<ZoneType> affectedZones = new ArrayList<ZoneType>();
final Game game = sa.getActivatingPlayer().getGame();
if (sa.hasParam("PumpZone")) {

View File

@@ -34,7 +34,7 @@ public class PumpEffect extends SpellAbilityEffect {
return;
}
final Game game = sa.getActivatingPlayer().getGame();
final ArrayList<String> kws = new ArrayList<String>();
final List<String> kws = new ArrayList<String>();
for (String kw : keywords) {
if (kw.startsWith("HIDDEN")) {

View File

@@ -1,7 +1,15 @@
package forge.game.ability.effects;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import forge.game.Game;
@@ -16,12 +24,6 @@ import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerType;
import forge.game.zone.ZoneType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
public class VoteEffect extends SpellAbilityEffect {
/* (non-Javadoc)
@@ -66,7 +68,7 @@ public class VoteEffect extends SpellAbilityEffect {
while (tgtPlayers.contains(activator) && !activator.equals(Iterables.getFirst(tgtPlayers, null))) {
tgtPlayers.add(pSize - 1, tgtPlayers.remove(0));
}
ArrayListMultimap<Object, Player> votes = ArrayListMultimap.create();
ListMultimap<Object, Player> votes = ArrayListMultimap.create();
for (final Player p : tgtPlayers) {
int voteAmount = p.getKeywords().getAmount("You get an additional vote.") + 1;
@@ -107,7 +109,7 @@ public class VoteEffect extends SpellAbilityEffect {
}
}
private static List<Object> getMostVotes(final ArrayListMultimap<Object, Player> votes) {
private static List<Object> getMostVotes(final ListMultimap<Object, Player> votes) {
final List<Object> most = Lists.newArrayList();
int amount = 0;
for (final Object voteType : votes.keySet()) {

View File

@@ -642,7 +642,7 @@ public class CardFactory {
}
private static String[] getCardTypes(Card c) {
ArrayList<String> relevantTypes = new ArrayList<String>();
List<String> relevantTypes = new ArrayList<String>();
for (CoreType t : c.getType().getCoreTypes()) {
relevantTypes.add(t.name());
}

View File

@@ -2007,8 +2007,8 @@ public class CardFactoryUtil {
return types.size();
}
public static ArrayList<SpellAbility> getBushidoEffects(final Card c) {
final ArrayList<SpellAbility> list = new ArrayList<SpellAbility>();
public static List<SpellAbility> getBushidoEffects(final Card c) {
final List<SpellAbility> list = new ArrayList<SpellAbility>();
for (final String kw : c.getKeywords()) {
if (kw.contains("Bushido")) {
final String[] parse = kw.split(" ");

View File

@@ -153,7 +153,7 @@ public class CardState {
public final boolean hasIntrinsicKeyword(String k) {
return intrinsicKeywords.contains(k);
}
public final void setIntrinsicKeywords(final ArrayList<String> intrinsicKeyword0) {
public final void setIntrinsicKeywords(final List<String> intrinsicKeyword0) {
intrinsicKeywords = intrinsicKeyword0;
}
@@ -296,7 +296,7 @@ public class CardState {
public final Iterable<String> getStaticAbilityStrings() {
return staticAbilityStrings;
}
public final void setStaticAbilityStrings(final ArrayList<String> staticAbilityStrings0) {
public final void setStaticAbilityStrings(final List<String> staticAbilityStrings0) {
staticAbilityStrings = staticAbilityStrings0;
}
public boolean addStaticAbilityString(String s) {

View File

@@ -17,15 +17,17 @@
*/
package forge.game.cost;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import forge.card.ColorSet;
import forge.card.MagicColor;
import forge.game.card.Card;
import forge.game.mana.Mana;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
/**
* The Class CostAddMana.
@@ -73,7 +75,7 @@ public class CostAddMana extends CostPart {
if (ai.getGame().getRules().hasCommander()) {
cid = ai.getCommander().getRules().getColorIdentity();
}
ArrayList<Mana> manaProduced = new ArrayList<Mana>();
List<Mana> manaProduced = new ArrayList<Mana>();
final String type = this.getType();
for (int n = 0; n < decision.c; n++) {
if (StringUtils.isNumeric(type)) {

View File

@@ -37,7 +37,7 @@ import java.util.Map;
public class CostPayment {
private final Cost cost;
private final SpellAbility ability;
private final ArrayList<CostPart> paidCostParts = new ArrayList<CostPart>();
private final List<CostPart> paidCostParts = new ArrayList<CostPart>();
/**
* <p>

View File

@@ -52,9 +52,9 @@ public class ManaCostAdjustment {
if (!cardsOnBattlefield.contains(originalCard)) {
cardsOnBattlefield.add(originalCard);
}
final ArrayList<StaticAbility> raiseAbilities = new ArrayList<StaticAbility>();
final ArrayList<StaticAbility> reduceAbilities = new ArrayList<StaticAbility>();
final ArrayList<StaticAbility> setAbilities = new ArrayList<StaticAbility>();
final List<StaticAbility> raiseAbilities = new ArrayList<StaticAbility>();
final List<StaticAbility> reduceAbilities = new ArrayList<StaticAbility>();
final List<StaticAbility> setAbilities = new ArrayList<StaticAbility>();
// Sort abilities to apply them in proper order
for (Card c : cardsOnBattlefield) {

View File

@@ -494,7 +494,7 @@ public class ManaCostBeingPaid {
}
// Sort the keys to get a deterministic ordering.
ArrayList<ManaCostShard> shards = new ArrayList<ManaCostShard>(unpaidShards.keySet());
List<ManaCostShard> shards = new ArrayList<ManaCostShard>(unpaidShards.keySet());
Collections.sort(shards);
for (ManaCostShard shard : shards) {
if (shard == ManaCostShard.COLORLESS) {

View File

@@ -280,14 +280,14 @@ public class ManaPool implements Iterable<Mana> {
//Account for mana part of ability when undoing it
public boolean accountFor(final AbilityManaPart ma) {
if (ma == null) {
return false;
}
if (ma == null) {
return false;
}
if (floatingMana.isEmpty()) {
return false;
}
final ArrayList<Mana> removeFloating = new ArrayList<Mana>();
final List<Mana> removeFloating = new ArrayList<Mana>();
boolean manaNotAccountedFor = false;
// loop over mana produced by mana ability

View File

@@ -45,8 +45,8 @@ public class Phase implements java.io.Serializable {
this.type = type;
}
protected final ArrayList<GameCommand> at = new ArrayList<GameCommand>();
private final ArrayList<GameCommand> until = new ArrayList<GameCommand>();
protected final List<GameCommand> at = new ArrayList<GameCommand>();
private final List<GameCommand> until = new ArrayList<GameCommand>();
private final HashMap<Player, ArrayList<GameCommand>> untilMap = new HashMap<Player, ArrayList<GameCommand>>();
private final HashMap<Player, ArrayList<GameCommand>> untilEndMap = new HashMap<Player, ArrayList<GameCommand>>();
private final HashMap<Player, ArrayList<GameCommand>> registerMap = new HashMap<Player, ArrayList<GameCommand>>();

View File

@@ -1,6 +1,7 @@
package forge.game.player;
import java.util.HashSet;
import java.util.Set;
import forge.card.ColorSet;
import forge.game.card.Card;
@@ -8,8 +9,8 @@ import forge.game.spellability.SpellAbility;
//class for storing information during a game that is used at the end of the game to determine achievements
public class AchievementTracker {
public final HashSet<String> activatedUltimates = new HashSet<String>();
public final HashSet<String> challengesCompleted = new HashSet<String>();
public final Set<String> activatedUltimates = new HashSet<String>();
public final Set<String> challengesCompleted = new HashSet<String>();
public int mulliganTo = 7;
public int spellsCast = 0;
public int maxStormCount = 0;

View File

@@ -121,7 +121,7 @@ public class Player extends GameEntity implements Comparable<Player> {
private final Map<ZoneType, PlayerZone> zones = new EnumMap<ZoneType, PlayerZone>(ZoneType.class);
private CardCollection currentPlanes = new CardCollection();
private ArrayList<String> prowl = new ArrayList<String>();
private List<String> prowl = new ArrayList<String>();
private PlayerStatistics stats = new PlayerStatistics();
private PlayerController controller;
@@ -692,7 +692,7 @@ public class Player extends GameEntity implements Comparable<Player> {
boolean DEBUGShieldsWithEffects = false;
while (!getPreventNextDamageWithEffect().isEmpty() && restDamage != 0) {
TreeMap<Card, Map<String, String>> shieldMap = getPreventNextDamageWithEffect();
Map<Card, Map<String, String>> shieldMap = getPreventNextDamageWithEffect();
CardCollection preventionEffectSources = new CardCollection(shieldMap.keySet());
Card shieldSource = preventionEffectSources.get(0);
if (preventionEffectSources.size() > 1) {

View File

@@ -1,7 +1,6 @@
package forge.game.player;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -9,7 +8,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.base.Predicate;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
import forge.LobbyPlayer;
@@ -164,7 +163,7 @@ public abstract class PlayerController {
return chooseSomeType(kindOfType, sa, validTypes, invalidTypes, false);
}
public abstract Object vote(SpellAbility sa, String prompt, List<Object> options, ArrayListMultimap<Object, Player> votes);
public abstract Object vote(SpellAbility sa, String prompt, List<Object> options, ListMultimap<Object, Player> votes);
public abstract Pair<CounterType,String> chooseAndRemoveOrPutCounter(Card cardWithCounter);
public abstract boolean confirmReplacementEffect(ReplacementEffect replacementEffect, SpellAbility effectSA, String question);
public abstract CardCollectionView getCardsToMulligan(boolean isCommander, Player firstPlayer);
@@ -195,7 +194,7 @@ public abstract class PlayerController {
public abstract CounterType chooseCounterType(List<CounterType> options, SpellAbility sa, String prompt);
public abstract boolean confirmPayment(CostPart costPart, String string);
public abstract ReplacementEffect chooseSingleReplacementEffect(String prompt, List<ReplacementEffect> possibleReplacers, HashMap<String, Object> runParams);
public abstract ReplacementEffect chooseSingleReplacementEffect(String prompt, List<ReplacementEffect> possibleReplacers, Map<String, Object> runParams);
public abstract String chooseProtectionType(String string, SpellAbility sa, List<String> choices);
public abstract CardShields chooseRegenerationShield(Card c);

View File

@@ -17,6 +17,15 @@
*/
package forge.game.spellability;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import forge.card.ColorSet;
import forge.card.MagicColor;
import forge.game.card.Card;
@@ -29,14 +38,6 @@ import forge.game.replacement.ReplacementLayer;
import forge.game.replacement.ReplacementResult;
import forge.game.trigger.TriggerType;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* <p>
* Abstract AbilityMana class.
@@ -60,7 +61,7 @@ public class AbilityManaPart implements java.io.Serializable {
private final boolean persistentMana;
private String manaReplaceType;
private transient ArrayList<Mana> lastManaProduced = new ArrayList<Mana>();
private transient List<Mana> lastManaProduced = new ArrayList<Mana>();
private final transient Card sourceCard;
@@ -405,7 +406,7 @@ public class AbilityManaPart implements java.io.Serializable {
*
* @return a {@link java.lang.String} object.
*/
public ArrayList<Mana> getLastManaProduced() {
public List<Mana> getLastManaProduced() {
return this.lastManaProduced;
}

View File

@@ -110,7 +110,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
protected ApiType api = null;
private final ArrayList<Mana> payingMana = new ArrayList<Mana>();
private final List<Mana> payingMana = new ArrayList<Mana>();
private final List<SpellAbility> paidAbilities = new ArrayList<SpellAbility>();
private HashMap<String, CardCollection> paidLists = new HashMap<String, CardCollection>();
@@ -946,8 +946,8 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
* @return a {@link java.util.ArrayList} object.
* @since 1.0.15
*/
public final ArrayList<TargetChoices> getAllTargetChoices() {
final ArrayList<TargetChoices> res = new ArrayList<TargetChoices>();
public final List<TargetChoices> getAllTargetChoices() {
final List<TargetChoices> res = new ArrayList<TargetChoices>();
SpellAbility sa = getRootAbility();
if (sa.getTargetRestrictions() != null) {

View File

@@ -17,6 +17,10 @@
*/
package forge.game.spellability;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import forge.game.Game;
import forge.game.ability.AbilityUtils;
import forge.game.card.Card;
@@ -29,9 +33,6 @@ import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
import forge.util.Expressions;
import java.util.ArrayList;
import java.util.Map;
/**
* <p>
* SpellAbilityRestriction class.
@@ -80,7 +81,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables {
this.setHellbent(true);
}
if (value.startsWith("Prowl")) {
final ArrayList<String> prowlTypes = new ArrayList<String>();
final List<String> prowlTypes = new ArrayList<String>();
prowlTypes.add("Rogue");
if (value.split("Prowl").length > 1) {
prowlTypes.add(value.split("Prowl")[1]);

View File

@@ -254,9 +254,9 @@ public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView {
view.updateText(this);
// Run BecomesTargetTrigger
HashMap<String, Object> runParams = new HashMap<String, Object>();
Map<String, Object> runParams = new HashMap<String, Object>();
runParams.put("SourceSA", ability);
HashSet<Object> distinctObjects = new HashSet<Object>();
Set<Object> distinctObjects = new HashSet<Object>();
for (final Object tgt : target.getTargets()) {
if (distinctObjects.contains(tgt)) {
continue;

View File

@@ -156,7 +156,7 @@ public class SpellAbilityVariables {
private boolean allTargetsLegal = false;
/** The prowl. */
private ArrayList<String> prowlTypes = new ArrayList<String>();
private List<String> prowlTypes = new ArrayList<String>();
/** The s is present. */
private String isPresent = null;
@@ -518,7 +518,7 @@ public class SpellAbilityVariables {
* @param types
* the new prowl
*/
public final void setProwlTypes(final ArrayList<String> types) {
public final void setProwlTypes(final List<String> types) {
this.prowlTypes = types;
}
@@ -750,7 +750,7 @@ public class SpellAbilityVariables {
*
* @return the prowl
*/
public final ArrayList<String> getProwlTypes() {
public final List<String> getProwlTypes() {
return this.prowlTypes;
}

View File

@@ -109,7 +109,7 @@ public class TargetChoices implements Cloneable {
}
public final List<GameObject> getTargets() {
final ArrayList<GameObject> tgts = new ArrayList<GameObject>();
final List<GameObject> tgts = new ArrayList<GameObject>();
tgts.addAll(targetPlayers);
tgts.addAll(targetCards);
tgts.addAll(targetSpells);

View File

@@ -100,7 +100,7 @@ public final class StaticAbilityContinuous {
final Card hostCard = stAb.getHostCard();
final Player controller = hostCard.getController();
final ArrayList<Player> affectedPlayers = StaticAbilityContinuous.getAffectedPlayers(stAb);
final List<Player> affectedPlayers = StaticAbilityContinuous.getAffectedPlayers(stAb);
final Game game = hostCard.getGame();
final StaticEffect se = game.getStaticEffects().getStaticEffect(stAb);
@@ -132,7 +132,7 @@ public final class StaticAbilityContinuous {
String addColors = null;
String[] addTriggers = null;
String[] addStatics = null;
ArrayList<SpellAbility> addFullAbs = null;
List<SpellAbility> addFullAbs = null;
boolean removeAllAbilities = false;
boolean removeSuperTypes = false;
boolean removeCardTypes = false;
@@ -329,7 +329,7 @@ public final class StaticAbilityContinuous {
if (layer == StaticAbilityLayer.ABILITIES1 && params.containsKey("GainsAbilitiesOf")) {
final String[] valids = params.get("GainsAbilitiesOf").split(",");
ArrayList<ZoneType> validZones = new ArrayList<ZoneType>();
List<ZoneType> validZones = new ArrayList<ZoneType>();
validZones.add(ZoneType.Battlefield);
if (params.containsKey("GainsAbilitiesOfZones")) {
validZones.clear();
@@ -656,12 +656,12 @@ public final class StaticAbilityContinuous {
sourceCard.addLeavesPlayCommand(removeIgnore);
}
private static ArrayList<Player> getAffectedPlayers(final StaticAbility stAb) {
private static List<Player> getAffectedPlayers(final StaticAbility stAb) {
final Map<String, String> params = stAb.getMapParams();
final Card hostCard = stAb.getHostCard();
final Player controller = hostCard.getController();
final ArrayList<Player> players = new ArrayList<Player>();
final List<Player> players = new ArrayList<Player>();
if (!params.containsKey("Affected")) {
return players;

View File

@@ -17,15 +17,16 @@
*/
package forge.game.trigger;
import forge.game.card.Card;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.util.FCollection;
import java.util.List;
import java.util.Map;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import forge.game.card.Card;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.util.FCollection;
/**
* <p>
@@ -63,12 +64,12 @@ public class TriggerVote extends Trigger {
@Override
public final void setTriggeringObjects(final SpellAbility sa) {
@SuppressWarnings("unchecked")
final ArrayListMultimap<Object, Player> votes = (ArrayListMultimap<Object, Player>) this.getRunParams().get("AllVotes");
final ListMultimap<Object, Player> votes = (ArrayListMultimap<Object, Player>) this.getRunParams().get("AllVotes");
sa.setTriggeringObject("OtherVoters", getVoters(this.getHostCard().getController(), votes, true, true));
}
private static FCollection<Player> getVoters(final Player player,
final ArrayListMultimap<Object, Player> votes,
final ListMultimap<Object, Player> votes,
final boolean isOpponent, final boolean votedOtherchoice) {
final FCollection<Player> voters = new FCollection<Player>();
for (final Object voteType : votes.keySet()) {

View File

@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Map.Entry;
import java.util.Stack;
import java.util.concurrent.LinkedBlockingDeque;
@@ -377,7 +378,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
s = si.getSpellAbility(true);
}
runParams.put("SourceSA", s);
HashSet<Object> distinctObjects = new HashSet<Object>();
Set<Object> distinctObjects = new HashSet<Object>();
for (final TargetChoices tc : chosenTargets) {
if (tc != null && tc.getTargetCards() != null) {
for (final Object tgt : tc.getTargets()) {

View File

@@ -16,7 +16,7 @@ import java.util.Set;
public class FCollection<T> implements List<T>, Set<T>, FCollectionView<T>, Cloneable, Serializable {
private static final long serialVersionUID = -1664555336364294106L;
private final HashSet<T> set = new HashSet<T>();
private final Set<T> set = new HashSet<T>();
private final LinkedList<T> list = new LinkedList<T>();
public FCollection() {

View File

@@ -603,7 +603,7 @@ public class MultiLineLabelUI extends BasicLabelUI implements ComponentListener
/**
* Reused segments.
*/
private final ArrayList<Segment> segments = new ArrayList<Segment>(2);
private final List<Segment> segments = new ArrayList<Segment>(2);
/**
* Singleton instance.

View File

@@ -94,7 +94,7 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
private final Class<T> genericType;
private final CDetailPicture cDetailPicture;
private ItemManagerConfig config;
private final ArrayList<ListSelectionListener> selectionListeners = new ArrayList<ListSelectionListener>();
private final List<ListSelectionListener> selectionListeners = new ArrayList<ListSelectionListener>();
private final SkinnedCheckBox chkEnableFilters = new SkinnedCheckBox();

View File

@@ -1,18 +1,20 @@
package forge.itemmanager.filters;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Icon;
import javax.swing.JPanel;
import forge.UiCommand;
import forge.item.InventoryItem;
import forge.itemmanager.ItemManager;
import forge.toolbox.FLabel;
import forge.toolbox.FSkin;
import forge.toolbox.LayoutHelper;
import forge.toolbox.FSkin.SkinFont;
import forge.toolbox.FSkin.SkinImage;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import forge.toolbox.LayoutHelper;
/**
* TODO: Write javadoc for this type.
@@ -21,7 +23,7 @@ import java.util.ArrayList;
@SuppressWarnings("serial")
public abstract class ToggleButtonsFilter<T extends InventoryItem> extends ItemFilter<T> {
protected boolean lockFiltering;
private final ArrayList<FLabel> buttons = new ArrayList<FLabel>();
private final List<FLabel> buttons = new ArrayList<FLabel>();
protected ToggleButtonsFilter(ItemManager<? super T> itemManager0) {
super(itemManager0);

View File

@@ -79,8 +79,8 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
private Point hoverScrollPos;
private ItemInfo hoveredItem;
private ItemInfo focalItem;
private final ArrayList<ItemInfo> orderedItems = new ArrayList<ItemInfo>();
private final ArrayList<Group> groups = new ArrayList<Group>();
private final List<ItemInfo> orderedItems = new ArrayList<ItemInfo>();
private final List<Group> groups = new ArrayList<Group>();
@SuppressWarnings("serial")
private class ExpandCollapseButton extends FLabel {
@@ -580,7 +580,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
if (forRefresh && pileBy != null) { //refresh piles if needed
//use TreeMap to build pile set so iterating below sorts on key
ColumnDef groupPileBy = groupBy == null ? pileBy : groupBy.getGroupPileBy(i, pileBy);
TreeMap<Comparable<?>, Pile> piles = new TreeMap<Comparable<?>, Pile>();
Map<Comparable<?>, Pile> piles = new TreeMap<Comparable<?>, Pile>();
for (ItemInfo itemInfo : group.items) {
Comparable<?> key = groupPileBy.fnSort.apply(itemInfo);
if (!piles.containsKey(key)) {

View File

@@ -80,7 +80,7 @@ public class DeckHtmlSerializer {
}
}
final TreeMap<String, Integer> map = new TreeMap<String, Integer>();
final Map<String, Integer> map = new TreeMap<String, Integer>();
for (final Entry<PaperCard, Integer> entry : d.getMain()) {
map.put(entry.getKey().getName(), entry.getValue());
// System.out.println(entry.getValue() + " " +

View File

@@ -242,7 +242,7 @@ public final class CMatchUI
return FSkin.getAvatars().get(avatarIdx >= 0 ? avatarIdx : defaultIndex);
}
private void initMatch(final FCollectionView<PlayerView> sortedPlayers, final Iterable<PlayerView> myPlayers) {
private void initMatch(final FCollectionView<PlayerView> sortedPlayers, final Collection<PlayerView> myPlayers) {
this.sortedPlayers = sortedPlayers;
this.setLocalPlayers(myPlayers);
allHands = sortedPlayers.size() == getLocalPlayerCount();

View File

@@ -2,6 +2,7 @@ package forge.toolbox;
import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
@@ -14,7 +15,7 @@ import forge.toolbox.FSkin.SkinnedLabel;
@SuppressWarnings("serial")
public class FComboBoxPanel<E> extends JPanel {
private static final ArrayList<FComboBoxPanel<?>> allPanels = new ArrayList<FComboBoxPanel<?>>();
private static final List<FComboBoxPanel<?>> allPanels = new ArrayList<FComboBoxPanel<?>>();
public static void refreshAllSkins() {
for (final FComboBoxPanel<?> panel : allPanels) {

View File

@@ -5,6 +5,7 @@ import java.awt.event.ActionListener;
import java.awt.event.ItemListener;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ComboBoxModel;
import javax.swing.JComponent;
@@ -22,7 +23,7 @@ import forge.toolbox.FSkin.SkinFont;
*/
public class FComboBoxWrapper<E> implements IComboBox<E> {
private static final ArrayList<FComboBoxWrapper<?>> allWrappers = new ArrayList<FComboBoxWrapper<?>>();
private static final List<FComboBoxWrapper<?>> allWrappers = new ArrayList<FComboBoxWrapper<?>>();
public static void refreshAllSkins() {
for (final FComboBoxWrapper<?> wrapper : allWrappers) {

View File

@@ -5,6 +5,7 @@ import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.swing.Timer;
@@ -18,7 +19,7 @@ import forge.toolbox.FSkin.SkinnedLabel;
public class FDigitalClock extends SkinnedLabel {
private static final Calendar now = Calendar.getInstance();
private static final DateFormat timeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT);
private static final ArrayList<FDigitalClock> clocks = new ArrayList<FDigitalClock>();
private static final List<FDigitalClock> clocks = new ArrayList<FDigitalClock>();
private static Timer timer;
private static String currentTimeDisplay;

View File

@@ -1100,7 +1100,7 @@ public class FSkin {
if (allSkins == null) { //initialize
allSkins = new ArrayList<String>();
final ArrayList<String> skinDirectoryNames = getSkinDirectoryNames();
final List<String> skinDirectoryNames = getSkinDirectoryNames();
for (int i = 0; i < skinDirectoryNames.size(); i++) {
allSkins.add(WordUtils.capitalize(skinDirectoryNames.get(i).replace('_', ' ')));
}
@@ -1337,8 +1337,8 @@ public class FSkin {
*
* @return the skins
*/
public static ArrayList<String> getSkinDirectoryNames() {
final ArrayList<String> mySkins = new ArrayList<String>();
public static List<String> getSkinDirectoryNames() {
final List<String> mySkins = new ArrayList<String>();
final File dir = new File(ForgeConstants.SKINS_DIR);
final String[] children = dir.list();

View File

@@ -1,8 +1,9 @@
package forge.ai.simulation;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import com.google.common.collect.Lists;
import forge.GuiBase;
@@ -26,7 +27,6 @@ import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType;
import forge.item.IPaperCard;
import forge.model.FModel;
import junit.framework.TestCase;
public class GameSimulatorTest extends TestCase {
private static boolean initialized = false;
@@ -319,7 +319,7 @@ public class GameSimulatorTest extends TestCase {
game.getAction().checkStateEffects(true);
CardCollection cards = ComputerUtilAbility.getAvailableCards(game, p);
ArrayList<SpellAbility> abilities = ComputerUtilAbility.getSpellAbilities(cards, p);
List<SpellAbility> abilities = ComputerUtilAbility.getSpellAbilities(cards, p);
SpellAbility minusTwo = findSAWithPrefix(abilities, "-2: Put a 2/2 black Vampire");
assertNotNull(minusTwo);
minusTwo.setActivatingPlayer(p);

View File

@@ -9,8 +9,8 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.base.Predicate;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
import forge.LobbyPlayer;
@@ -465,26 +465,26 @@ public class PlayerControllerForTests extends PlayerController {
return (CardCollection)items.subList(0, Math.max(amount, items.size()));
}
private <T> T chooseItem(Iterable<T> items) {
if (items == null) {
return null;
}
return Iterables.getFirst(items, null);
}
@Override
public SpellAbility getAbilityToPlay(Card hostCard, List<SpellAbility> abilities, ITriggerEvent triggerEvent) {
// Isn't this a method invocation loop? --elcnesh
return getAbilityToPlay(hostCard, abilities);
}
@Override
public String chooseSomeType(String kindOfType, SpellAbility sa, List<String> validTypes, List<String> invalidTypes, boolean isOptional) {
return chooseItem(validTypes);
}
private <T> T chooseItem(Iterable<T> items) {
if (items == null) {
return null;
}
return Iterables.getFirst(items, null);
}
@Override
public Object vote(SpellAbility sa, String prompt, List<Object> options, ArrayListMultimap<Object, Player> votes) {
public SpellAbility getAbilityToPlay(Card hostCard, List<SpellAbility> abilities, ITriggerEvent triggerEvent) {
// Isn't this a method invocation loop? --elcnesh
return getAbilityToPlay(hostCard, abilities);
}
@Override
public String chooseSomeType(String kindOfType, SpellAbility sa, List<String> validTypes, List<String> invalidTypes, boolean isOptional) {
return chooseItem(validTypes);
}
@Override
public Object vote(SpellAbility sa, String prompt, List<Object> options, ListMultimap<Object, Player> votes) {
return chooseItem(options);
}
@@ -509,9 +509,7 @@ public class PlayerControllerForTests extends PlayerController {
}
@Override
public ReplacementEffect chooseSingleReplacementEffect(String prompt,
List<ReplacementEffect> possibleReplacers,
HashMap<String, Object> runParams) {
public ReplacementEffect chooseSingleReplacementEffect(String prompt, List<ReplacementEffect> possibleReplacers, Map<String, Object> runParams) {
// TODO Auto-generated method stub
return Iterables.getFirst(possibleReplacers, null);
}

View File

@@ -1,6 +1,7 @@
package forge;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import com.badlogic.gdx.ApplicationListener;
@@ -405,7 +406,7 @@ public class Forge implements ApplicationListener {
}
private static class MainInputProcessor extends FGestureAdapter {
private static final ArrayList<FDisplayObject> potentialListeners = new ArrayList<FDisplayObject>();
private static final List<FDisplayObject> potentialListeners = new ArrayList<FDisplayObject>();
private static char lastKeyTyped;
private static boolean keyTyped, shiftKeyDown;

View File

@@ -10,19 +10,17 @@ import forge.Graphics;
import forge.toolbox.FDisplayObject;
import forge.toolbox.FOverlay;
public class ForgeTransition extends ForgeAnimation {
private static final FOverlay overlay = new FOverlay(null) {
@Override
protected void doLayout(float width, float height) {
@Override protected void doLayout(final float width, final float height) {
}
};
private static final Map<FDisplayObject, TransitionObject> transitionLookup = new LinkedHashMap<FDisplayObject, TransitionObject>();
public static void queue(FDisplayObject obj, Rectangle destBounds, float duration, Runnable onFinished) {
public static void queue(final FDisplayObject obj, final Rectangle destBounds, final float duration, final Runnable onFinished) {
queue(obj, destBounds, duration, 0, false, onFinished);
}
public static void queue(FDisplayObject obj, Rectangle destBounds, float duration, float arcAmount, boolean arcOriginBelow, Runnable onFinished) {
public static void queue(final FDisplayObject obj, final Rectangle destBounds, final float duration, final float arcAmount, final boolean arcOriginBelow, final Runnable onFinished) {
TransitionObject transitionObj = transitionLookup.get(obj);
if (transitionObj == null) {
transitionObj = new TransitionObject(obj);
@@ -30,7 +28,7 @@ public class ForgeTransition extends ForgeAnimation {
overlay.add(transitionObj);
obj.setVisible(false); //hide original object while transition in progress
}
ForgeTransition transition = new ForgeTransition(transitionObj, destBounds, duration, arcAmount, arcOriginBelow, onFinished);
final ForgeTransition transition = new ForgeTransition(transitionObj, destBounds, duration, arcAmount, arcOriginBelow, onFinished);
transitionObj.transitions.add(transition);
if (transitionObj.transitions.size() == 1) {
transition.start(); //start transition right away if first transition added
@@ -45,7 +43,7 @@ public class ForgeTransition extends ForgeAnimation {
private final boolean arcOriginBelow;*/
private final Runnable onFinished;
private ForgeTransition(TransitionObject obj0, Rectangle destBounds0, float duration0, float arcAmount0, boolean arcOriginBelow0, Runnable onFinished0) {
private ForgeTransition(final TransitionObject obj0, final Rectangle destBounds0, final float duration0, final float arcAmount0, final boolean arcOriginBelow0, final Runnable onFinished0) {
obj = obj0;
/*destBounds = destBounds0;
duration = duration0;
@@ -55,12 +53,12 @@ public class ForgeTransition extends ForgeAnimation {
}
@Override
protected boolean advance(float dt) {
protected boolean advance(final float dt) {
return false;
}
@Override
protected void onEnd(boolean endingAll) {
protected void onEnd(final boolean endingAll) {
if (onFinished != null) {
onFinished.run();
}
@@ -70,7 +68,7 @@ public class ForgeTransition extends ForgeAnimation {
return;
}
int index = obj.transitions.indexOf(this);
final int index = obj.transitions.indexOf(this);
obj.transitions.remove(index);
if (index == 0) {
if (obj.transitions.isEmpty()) {
@@ -91,13 +89,13 @@ public class ForgeTransition extends ForgeAnimation {
private final FDisplayObject originalObj;
private final LinkedList<ForgeTransition> transitions = new LinkedList<ForgeTransition>();
private TransitionObject(FDisplayObject originalObj0) {
private TransitionObject(final FDisplayObject originalObj0) {
originalObj = originalObj0;
setBounds(originalObj.screenPos.x, originalObj.screenPos.y, originalObj.getWidth(), originalObj.getHeight());
}
@Override
public void draw(Graphics g) {
public void draw(final Graphics g) {
originalObj.draw(g);
}
}

View File

@@ -3,6 +3,7 @@ package forge.assets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.text.WordUtils;
@@ -30,7 +31,7 @@ public class FSkin {
private static final Map<FSkinProp, FSkinImage> images = new HashMap<FSkinProp, FSkinImage>();
private static final Map<Integer, TextureRegion> avatars = new HashMap<Integer, TextureRegion>();
private static ArrayList<String> allSkins;
private static List<String> allSkins;
private static FileHandle preferredDir;
private static String preferredName;
private static boolean loaded = false;
@@ -98,9 +99,9 @@ public class FSkin {
if (splashScreen != null) {
if (allSkins == null) { //initialize
allSkins = new ArrayList<String>();
ArrayList<String> skinDirectoryNames = getSkinDirectoryNames();
for (int i = 0; i < skinDirectoryNames.size(); i++) {
allSkins.add(WordUtils.capitalize(skinDirectoryNames.get(i).replace('_', ' ')));
final List<String> skinDirectoryNames = getSkinDirectoryNames();
for (final String skinDirectoryName : skinDirectoryNames) {
allSkins.add(WordUtils.capitalize(skinDirectoryName.replace('_', ' ')));
}
Collections.sort(allSkins);
}
@@ -300,8 +301,8 @@ public class FSkin {
*
* @return the skins
*/
public static ArrayList<String> getSkinDirectoryNames() {
final ArrayList<String> mySkins = new ArrayList<String>();
public static List<String> getSkinDirectoryNames() {
final List<String> mySkins = new ArrayList<String>();
final FileHandle dir = Gdx.files.absolute(ForgeConstants.SKINS_DIR);
for (FileHandle skinFile : dir.list()) {

View File

@@ -1,5 +1,10 @@
package forge.itemmanager.filters;
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
import forge.assets.FImage;
import forge.item.InventoryItem;
import forge.itemmanager.ItemManager;
@@ -7,14 +12,11 @@ import forge.toolbox.FEvent;
import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FEvent.FEventType;
import forge.toolbox.FLabel;
import java.util.ArrayList;
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
public abstract class ToggleButtonsFilter<T extends InventoryItem> extends ItemFilter<T> {
protected boolean lockFiltering;
private final ArrayList<FLabel> buttons = new ArrayList<FLabel>();
private final List<FLabel> buttons = new ArrayList<FLabel>();
protected ToggleButtonsFilter(ItemManager<? super T> itemManager0) {
super(itemManager0);

View File

@@ -63,8 +63,8 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
private ItemInfo focalItem;
private boolean updatingLayout;
private float totalZoomAmount;
private final ArrayList<ItemInfo> orderedItems = new ArrayList<ItemInfo>();
private final ArrayList<Group> groups = new ArrayList<Group>();
private final List<ItemInfo> orderedItems = new ArrayList<ItemInfo>();
private final List<Group> groups = new ArrayList<Group>();
private class ExpandCollapseButton extends FLabel {
private boolean isAllCollapsed;
@@ -435,7 +435,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
if (forRefresh && pileBy != null) { //refresh piles if needed
//use TreeMap to build pile set so iterating below sorts on key
ColumnDef groupPileBy = groupBy == null ? pileBy : groupBy.getGroupPileBy(i, pileBy);
TreeMap<Comparable<?>, Pile> piles = new TreeMap<Comparable<?>, Pile>();
Map<Comparable<?>, Pile> piles = new TreeMap<Comparable<?>, Pile>();
for (ItemInfo itemInfo : group.items) {
Comparable<?> key = groupPileBy.fnSort.apply(itemInfo);
if (!piles.containsKey(key)) {

View File

@@ -1,6 +1,6 @@
package forge.screens;
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
@@ -10,8 +10,8 @@ import forge.Forge;
import forge.Graphics;
import forge.assets.FImage;
import forge.assets.FSkinColor;
import forge.assets.FSkinFont;
import forge.assets.FSkinColor.Colors;
import forge.assets.FSkinFont;
import forge.assets.FSkinTexture;
import forge.menu.FPopupMenu;
import forge.screens.home.HomeScreen;
@@ -130,7 +130,7 @@ public abstract class FScreen extends FContainer {
}
@Override
public void buildTouchListeners(float screenX, float screenY, ArrayList<FDisplayObject> listeners) {
public void buildTouchListeners(float screenX, float screenY, List<FDisplayObject> listeners) {
if (Forge.isLandscapeMode()) {
//allow touch events on backdrop screen if any
FScreen backdrop = getLandscapeBackdropScreen();

View File

@@ -1,17 +1,18 @@
package forge.screens.home;
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
import forge.Forge;
import forge.Graphics;
import forge.screens.FScreen;
import forge.assets.FSkinColor;
import forge.assets.FSkinColor.Colors;
import forge.assets.FSkinImage;
import forge.deck.FDeckChooser;
import forge.game.GameType;
import forge.screens.FScreen;
import forge.screens.achievements.AchievementsScreen;
import forge.screens.online.OnlineMenu;
import forge.screens.settings.SettingsScreen;
@@ -31,7 +32,7 @@ public class HomeScreen extends FScreen {
public static final HomeScreen instance = new HomeScreen();
private final FLabel lblLogo = add(new FLabel.Builder().icon(FSkinImage.LOGO).iconInBackground().iconScaleFactor(1).build());
private final ArrayList<MenuButton> buttons = new ArrayList<MenuButton>();
private final List<MenuButton> buttons = new ArrayList<MenuButton>();
private int activeButtonIndex;
private FDeckChooser deckManager;

View File

@@ -129,7 +129,7 @@ public class MatchController extends AbstractGuiGame {
}
@Override
public void buildTouchListeners(final float screenX, final float screenY, final ArrayList<FDisplayObject> listeners) {
public void buildTouchListeners(final float screenX, final float screenY, final List<FDisplayObject> listeners) {
if (screenY < view.getHeight() - VPrompt.HEIGHT) {
hostedMatch.pause();
}

View File

@@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import org.apache.commons.lang3.tuple.Pair;
@@ -313,7 +314,7 @@ public class MatchScreen extends FScreen {
if (game == null) { return; }
//draw arrows for paired cards
HashSet<CardView> pairedCards = new HashSet<CardView>();
Set<CardView> pairedCards = new HashSet<CardView>();
for (VPlayerPanel playerPanel : playerPanels.values()) {
for (CardView card : playerPanel.getField().getRow1().getOrderedCards()) {
if (pairedCards.contains(card)) { continue; } //prevent arrows going both ways

View File

@@ -1,6 +1,6 @@
package forge.screens.match.views;
import java.util.ArrayList;
import java.util.List;
import forge.game.player.PlayerView;
import forge.game.zone.ZoneType;
@@ -27,7 +27,7 @@ public class VZoneDisplay extends VCardDisplayArea {
}
@Override
public void buildTouchListeners(float screenX, float screenY, ArrayList<FDisplayObject> listeners) {
public void buildTouchListeners(float screenX, float screenY, List<FDisplayObject> listeners) {
super.buildTouchListeners(screenX, screenY, listeners);
if (revealedPanel != null) {

View File

@@ -2,6 +2,7 @@ package forge.toolbox;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.List;
import com.badlogic.gdx.math.Vector2;
@@ -9,7 +10,7 @@ import forge.Graphics;
import forge.error.BugReporter;
public abstract class FContainer extends FDisplayObject {
private final ArrayList<FDisplayObject> children = new ArrayList<FDisplayObject>();
private final List<FDisplayObject> children = new ArrayList<FDisplayObject>();
public <T extends FDisplayObject> T add(T child) {
children.add(child);
@@ -103,7 +104,7 @@ public abstract class FContainer extends FDisplayObject {
protected abstract void doLayout(float width, float height);
@Override
public void buildTouchListeners(float screenX, float screenY, ArrayList<FDisplayObject> listeners) {
public void buildTouchListeners(float screenX, float screenY, List<FDisplayObject> listeners) {
if (isEnabled() && isVisible() && screenPos.contains(screenX, screenY)) {
for (int i = children.size() - 1; i >= 0; i--) {
children.get(i).buildTouchListeners(screenX, screenY, listeners);

View File

@@ -1,8 +1,9 @@
package forge.toolbox;
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.math.Rectangle;
import forge.Graphics;
public abstract class FDisplayObject {
@@ -109,7 +110,7 @@ public abstract class FDisplayObject {
}
public abstract void draw(Graphics g);
public void buildTouchListeners(float screenX, float screenY, ArrayList<FDisplayObject> listeners) {
public void buildTouchListeners(float screenX, float screenY, List<FDisplayObject> listeners) {
if (enabled && visible && screenPos.contains(screenX, screenY)) {
listeners.add(this);
}

View File

@@ -1,6 +1,7 @@
package forge.toolbox;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import com.badlogic.gdx.Input.Keys;
@@ -47,7 +48,7 @@ public abstract class FOverlay extends FContainer {
if (overlays.size() < 2) {
return overlays; //don't need to create new list if one or fewer overlay
}
ArrayList<FOverlay> reversedList = new ArrayList<FOverlay>();
List<FOverlay> reversedList = new ArrayList<FOverlay>();
for (int i = overlays.size() - 1; i >= 0; i--) {
reversedList.add(overlays.get(i));
}
@@ -183,7 +184,7 @@ public abstract class FOverlay extends FContainer {
}
@Override
public void buildTouchListeners(float screenX, float screenY, ArrayList<FDisplayObject> listeners) {
public void buildTouchListeners(float screenX, float screenY, List<FDisplayObject> listeners) {
if (tempOverlay == this) { return; } //suppress touch events if waiting to be hidden
super.buildTouchListeners(screenX, screenY, listeners);

View File

@@ -1,11 +1,11 @@
package forge.toolbox;
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.math.Vector2;
import forge.animation.ForgeAnimation;
import forge.Graphics;
import forge.animation.ForgeAnimation;
import forge.util.PhysicsObject;
import forge.util.Utils;
@@ -273,7 +273,7 @@ public abstract class FScrollPane extends FContainer {
}
@Override
public void buildTouchListeners(float screenX, float screenY, ArrayList<FDisplayObject> listeners) {
public void buildTouchListeners(float screenX, float screenY, List<FDisplayObject> listeners) {
//if fling animation active, stop it and prevent child controls handling touch events before next touch down unless already moving really slow
if (activeFlingAnimation != null) {
boolean suppressEvent = activeFlingAnimation.physicsObj.getVelocity().len() > Utils.AVG_FINGER_HEIGHT;

View File

@@ -1,6 +1,7 @@
package forge.achievement;
import java.util.HashSet;
import java.util.Set;
import forge.game.Game;
import forge.game.card.Card;
@@ -15,7 +16,7 @@ public class Domain extends ProgressiveAchievement {
@Override
protected boolean eval(Player player, Game game) {
if (player.getOutcome().hasWon()) {
HashSet<String> basicLands = new HashSet<String>();
Set<String> basicLands = new HashSet<String>();
for (Card c : player.getCardsIn(ZoneType.Battlefield)) {
if (c.isBasicLand()) {
basicLands.add(c.getName());

View File

@@ -322,7 +322,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventBlockersDeclared event) {
final HashSet<Card> cards = new HashSet<Card>();
final Set<Card> cards = new HashSet<Card>();
for (final MapOfLists<Card, Card> kv : event.blockers.values()) {
for (final Collection<Card> blockers : kv.values()) {
cards.addAll(blockers);

View File

@@ -9,7 +9,7 @@ public class ColorDeckGenerator extends DeckProxy implements Comparable<ColorDec
public static List<DeckProxy> getColorDecks(final IItemManager<DeckProxy> lstDecks0, final boolean isAi0) {
final String[] colors = new String[] { "Random 1", "Random 2", "Random 3",
"White", "Blue", "Black", "Red", "Green" };
final ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
final List<DeckProxy> decks = new ArrayList<DeckProxy>();
for (int i = 0; i < colors.length; i++) {
decks.add(new ColorDeckGenerator(colors[i], i, lstDecks0, isAi0));
}

View File

@@ -59,8 +59,8 @@ public class DeckGeneratorTheme extends DeckGeneratorBase {
*
* @return a {@link java.util.ArrayList} object.
*/
public static final ArrayList<String> getThemeNames() {
final ArrayList<String> ltNames = new ArrayList<String>();
public static final List<String> getThemeNames() {
final List<String> ltNames = new ArrayList<String>();
final File file = new File(ForgeConstants.THEMES_DIR);
@@ -170,7 +170,7 @@ public class DeckGeneratorTheme extends DeckGeneratorBase {
private class Grp {
/** The Cardnames. */
private final ArrayList<String> cardnames = new ArrayList<String>();
private final List<String> cardnames = new ArrayList<String>();
/** The Max cnt. */
private int maxCnt;

View File

@@ -3,6 +3,7 @@ package forge.deck;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Map.Entry;
import org.apache.commons.lang3.StringUtils;
@@ -140,7 +141,7 @@ public class DeckProxy implements InventoryItem {
if (color == null && !isGeneratedDeck()) {
byte colorProfile = MagicColor.COLORLESS;
byte landProfile = MagicColor.COLORLESS;
HashSet<Byte> nonReqColors = null;
Set<Byte> nonReqColors = null;
for (final Entry<DeckSection, CardPool> deckEntry : getDeck()) {
switch (deckEntry.getKey()) {

View File

@@ -17,11 +17,12 @@
*/
package forge.download;
import forge.properties.ForgeConstants;
import java.util.HashMap;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
import forge.properties.ForgeConstants;
public class GuiDownloadPrices extends GuiDownloadService {
@Override
public String getTitle() {
@@ -30,8 +31,6 @@ public class GuiDownloadPrices extends GuiDownloadService {
@Override
protected Map<String, String> getNeededFiles() {
Map<String, String> result = new HashMap<String, String>();
result.put(ForgeConstants.QUEST_CARD_PRICE_FILE, ForgeConstants.URL_PRICE_DOWNLOAD);
return result;
return ImmutableMap.of(ForgeConstants.QUEST_CARD_PRICE_FILE, ForgeConstants.URL_PRICE_DOWNLOAD);
}
}

View File

@@ -17,12 +17,13 @@
*/
package forge.itemmanager;
import forge.itemmanager.ItemColumnConfig.SortState;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import forge.itemmanager.ItemColumnConfig.SortState;
/**
* A collection of methods pertaining to columns in card catalog and
* current deck tables, for use in the deck editor.
@@ -55,7 +56,7 @@ public final class SColumnUtil {
}
private static Map<ColumnDef, ItemColumnConfig> getCardColumns(ColumnDef quantityColDef, boolean includeFavorite,
boolean includeOwned, boolean includePrice, boolean includeNew, boolean includeDecks) {
ArrayList<ColumnDef> colDefs = new ArrayList<ColumnDef>();
List<ColumnDef> colDefs = new ArrayList<ColumnDef>();
if (includeFavorite) {
colDefs.add(ColumnDef.FAVORITE);
}
@@ -126,7 +127,7 @@ public final class SColumnUtil {
}
public static Map<ColumnDef, ItemColumnConfig> getSpecialCardPoolDefaultColumns() {
ArrayList<ColumnDef> colDefs = new ArrayList<ColumnDef>();
List<ColumnDef> colDefs = new ArrayList<ColumnDef>();
colDefs.add(ColumnDef.FAVORITE);
colDefs.add(ColumnDef.NAME);
colDefs.add(ColumnDef.TYPE);
@@ -186,7 +187,7 @@ public final class SColumnUtil {
}
public static Map<ColumnDef, ItemColumnConfig> getDecksDefaultColumns(boolean allowEdit, boolean includeFolder) {
ArrayList<ColumnDef> colDefs = new ArrayList<ColumnDef>();
List<ColumnDef> colDefs = new ArrayList<ColumnDef>();
colDefs.add(ColumnDef.DECK_FAVORITE);
if (allowEdit) {
colDefs.add(ColumnDef.DECK_ACTIONS);

View File

@@ -215,7 +215,7 @@ public class BoosterDraft implements IBoosterDraft {
/** Looks for draft files, reads them, returns a list. */
private static List<CustomLimited> loadCustomDrafts() {
String[] dList;
final ArrayList<CustomLimited> customs = new ArrayList<CustomLimited>();
final List<CustomLimited> customs = new ArrayList<CustomLimited>();
// get list of custom draft files
final File dFolder = new File(ForgeConstants.DRAFT_DIR);

View File

@@ -50,7 +50,7 @@ public class BoosterDraftAI {
// holds all the cards for each of the computer's decks
protected final List<List<PaperCard>> deck = new ArrayList<List<PaperCard>>();
protected final ArrayList<DeckColors> playerColors = new ArrayList<DeckColors>();
protected final List<DeckColors> playerColors = new ArrayList<DeckColors>();
// roughly equivalent to 25 ranks in a core set, or 15 ranks in a small set
private static final double TAKE_BEST_THRESHOLD = 0.1;

View File

@@ -61,7 +61,7 @@ import java.util.Map.Entry;
public class SealedCardPoolGenerator {
public static final String FILE_EXT = ".sealed";
private final ArrayList<IUnOpenedProduct> product = new ArrayList<IUnOpenedProduct>();
private final List<IUnOpenedProduct> product = new ArrayList<IUnOpenedProduct>();
/** The Land set code. */
private String landSetCode = null;
@@ -216,7 +216,7 @@ public class SealedCardPoolGenerator {
case Custom:
String[] dList;
final ArrayList<CustomLimited> customs = new ArrayList<CustomLimited>();
final List<CustomLimited> customs = new ArrayList<CustomLimited>();
// get list of custom draft files
final File dFolder = new File(ForgeConstants.SEALED_DIR);
@@ -278,9 +278,9 @@ public class SealedCardPoolGenerator {
*
* @return an ArrayList of the set choices.
*/
private static ArrayList<String> getSetCombos(final List<String> setz, final int nPacks) {
private static List<String> getSetCombos(final List<String> setz, final int nPacks) {
String[] sets = setz.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
ArrayList<String> setCombos = new ArrayList<String>();
List<String> setCombos = new ArrayList<String>();
if (nPacks == 3) {
if (sets.length >= 2) {

View File

@@ -1,16 +1,17 @@
package forge.limited;
import java.util.ArrayList;
import java.util.List;
import forge.deck.CardPool;
import forge.item.PaperCard;
import forge.util.MyRandom;
import java.util.ArrayList;
public class WinstonDraftAI extends BoosterDraftAI{
private WinstonDraft draft = null;
private static final int N_DECKS = 1;
private ArrayList<Byte> colorPreference = new ArrayList<>();
private List<Byte> colorPreference = new ArrayList<>();
public WinstonDraft getDraft() {
return draft;

View File

@@ -31,24 +31,33 @@ import forge.util.FCollection;
import forge.util.FCollectionView;
public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
private FCollectionView<PlayerView> localPlayers = new FCollection<PlayerView>();
private FCollection<PlayerView> localPlayers = new FCollection<PlayerView>();
private PlayerView currentPlayer = null;
protected final void setLocalPlayers(final Iterable<PlayerView> myPlayers) {
protected final void setLocalPlayers(final Collection<PlayerView> myPlayers) {
this.localPlayers = myPlayers == null ? new FCollection<PlayerView>() : new FCollection<PlayerView>(myPlayers);
this.currentPlayer = Iterables.getFirst(this.localPlayers, null);
this.autoPassUntilEndOfTurn.retainAll(myPlayers);
}
private void addLocalPlayer(final PlayerView player) {
this.localPlayers.add(player);
}
private void removeLocalPlayer(final PlayerView player) {
this.localPlayers.remove(player);
this.autoPassUntilEndOfTurn.remove(player);
}
public final boolean hasLocalPlayers() {
return localPlayers != null && !localPlayers.isEmpty();
return !localPlayers.isEmpty();
}
public final FCollectionView<PlayerView> getLocalPlayers() {
return localPlayers;
}
public final int getLocalPlayerCount() {
return localPlayers == null ? 0 : localPlayers.size();
return localPlayers.size();
}
public final boolean isLocalPlayer(final PlayerView player) {
return hasLocalPlayers() && localPlayers.contains(player);
return localPlayers.contains(player);
}
public final PlayerView getCurrentPlayer() {
@@ -83,6 +92,11 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards {
@Override
public void setGameController(final PlayerView player, final IGameController gameController) {
this.gameControllers.put(player, gameController);
if (gameController == null) {
addLocalPlayer(player);
} else {
removeLocalPlayer(player);
}
}
@Override

View File

@@ -247,7 +247,7 @@ public abstract class InputPayMana extends InputSyncronizedBase {
colorNeeded = MagicColor.WHITE;
}
else {
final ArrayList<SpellAbility> colorMatches = new ArrayList<SpellAbility>();
final List<SpellAbility> colorMatches = new ArrayList<SpellAbility>();
for (SpellAbility sa : abilities) {
if (abilityProducesManaColor(sa, sa.getManaPartRecursive(), colorNeeded)) {
colorMatches.add(sa);

View File

@@ -41,7 +41,7 @@ public class UnOpenedMeta implements IUnOpenedProduct {
SelectAll,
}
private final ArrayList<MetaSet> metaSets;
private final List<MetaSet> metaSets;
private final JoinOperation operation;
private final Random generator = MyRandom.getRandom();

Some files were not shown because too many files have changed in this diff Show More