diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 13e558ea7a9..61891b7ad87 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -643,7 +643,7 @@ public class ComputerUtilCard { return getMostProminentType(list, CardType.getAllCreatureTypes()); } - public static String getMostProminentType(final CardCollectionView list, final List valid) { + public static String getMostProminentType(final CardCollectionView list, final Collection valid) { if (list.size() == 0) { return ""; } diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index f0d1250cb58..04a9f303832 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -502,12 +502,11 @@ public class PlayerControllerAi extends PlayerController { } @Override - public String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes, boolean isOptional) { + public String chooseSomeType(String kindOfType, SpellAbility sa, Collection validTypes, List invalidTypes, boolean isOptional) { String chosen = ComputerUtil.chooseSomeType(player, kindOfType, sa.getParam("AILogic"), invalidTypes); - if (StringUtils.isBlank(chosen) && !validTypes.isEmpty()) - { - chosen = validTypes.get(0); - System.err.println("AI has no idea how to choose " + kindOfType +", defaulting to 1st element: chosen"); + if (StringUtils.isBlank(chosen) && !validTypes.isEmpty()) { + chosen = validTypes.iterator().next(); + System.err.println("AI has no idea how to choose " + kindOfType +", defaulting to arbitrary element: chosen"); } game.getAction().nofityOfValue(sa, player, chosen, player); return chosen; diff --git a/forge-core/src/main/java/forge/card/CardType.java b/forge-core/src/main/java/forge/card/CardType.java index 21cd142f63a..fbc16fe6ad3 100644 --- a/forge-core/src/main/java/forge/card/CardType.java +++ b/forge-core/src/main/java/forge/card/CardType.java @@ -606,13 +606,13 @@ public final class CardType implements Comparable, CardTypeView { public static class Constant { public static final Settable LOADED = new Settable(); - public static final List BASIC_TYPES = Lists.newArrayList(); - public static final List LAND_TYPES = Lists.newArrayList(); - public static final List CREATURE_TYPES = Lists.newArrayList(); - public static final List SPELL_TYPES = Lists.newArrayList(); - public static final List ENCHANTMENT_TYPES = Lists.newArrayList(); - public static final List ARTIFACT_TYPES = Lists.newArrayList(); - public static final List WALKER_TYPES = Lists.newArrayList(); + public static final Set BASIC_TYPES = Sets.newHashSet(); + public static final Set LAND_TYPES = Sets.newHashSet(); + public static final Set CREATURE_TYPES = Sets.newHashSet(); + public static final Set SPELL_TYPES = Sets.newHashSet(); + public static final Set ENCHANTMENT_TYPES = Sets.newHashSet(); + public static final Set ARTIFACT_TYPES = Sets.newHashSet(); + public static final Set WALKER_TYPES = Sets.newHashSet(); // singular -> plural public static final BiMap pluralTypes = HashBiMap.create(); @@ -699,12 +699,12 @@ public final class CardType implements Comparable, CardTypeView { return sortedSubTypes; } - public static List getBasicTypes() { - return Collections.unmodifiableList(Constant.BASIC_TYPES); + public static Collection getBasicTypes() { + return Collections.unmodifiableCollection(Constant.BASIC_TYPES); } - public static List getAllCreatureTypes() { - return Collections.unmodifiableList(Constant.CREATURE_TYPES); + public static Collection getAllCreatureTypes() { + return Collections.unmodifiableCollection(Constant.CREATURE_TYPES); } public static List getAllLandTypes() { return ImmutableList.builder() diff --git a/forge-game/src/main/java/forge/game/CardTraitBase.java b/forge-game/src/main/java/forge/game/CardTraitBase.java index 34c2a77edf5..a17f64007ae 100644 --- a/forge-game/src/main/java/forge/game/CardTraitBase.java +++ b/forge-game/src/main/java/forge/game/CardTraitBase.java @@ -73,7 +73,7 @@ public abstract class CardTraitBase extends GameObject implements IHasCardView { } public final String getParamOrDefault(String key, String defaultValue) { - return hasParam(key) ? getParam(key) : defaultValue; + return mapParams.getOrDefault(key, defaultValue); } public String getParam(String key) { diff --git a/forge-game/src/main/java/forge/game/player/PlayerController.java b/forge-game/src/main/java/forge/game/player/PlayerController.java index d5cef95818b..62d57539212 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerController.java +++ b/forge-game/src/main/java/forge/game/player/PlayerController.java @@ -161,8 +161,8 @@ public abstract class PlayerController { public abstract List chooseSaToActivateFromOpeningHand(List usableFromOpeningHand); public abstract Mana chooseManaFromPool(List manaChoices); - public abstract String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes, boolean isOptional); - public final String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes) { + public abstract String chooseSomeType(String kindOfType, SpellAbility sa, Collection validTypes, List invalidTypes, boolean isOptional); + public final String chooseSomeType(String kindOfType, SpellAbility sa, Collection validTypes, List invalidTypes) { return chooseSomeType(kindOfType, sa, validTypes, invalidTypes, false); } diff --git a/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java b/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java index f1906ebdb0f..c9ee0f75d17 100644 --- a/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java +++ b/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java @@ -481,7 +481,7 @@ public class PlayerControllerForTests extends PlayerController { } @Override - public String chooseSomeType(String kindOfType, SpellAbility sa, List validTypes, List invalidTypes, boolean isOptional) { + public String chooseSomeType(String kindOfType, SpellAbility sa, Collection validTypes, List invalidTypes, boolean isOptional) { return chooseItem(validTypes); } diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index 27d0060413c..d0c182e890c 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -57,6 +57,7 @@ import forge.util.storage.StorageBase; import java.io.File; import java.util.List; import java.util.Map; +import java.util.Set; /** * The default Model implementation for Forge. @@ -259,31 +260,31 @@ public final class FModel { if (!CardType.Constant.LOADED.isSet()) { final List typeListFile = FileUtil.readFile(ForgeConstants.TYPE_LIST_FILE); - List tList = null; + Set addTo = null; for (final String s : typeListFile) { if (s.equals("[BasicTypes]")) { - tList = CardType.Constant.BASIC_TYPES; + addTo = CardType.Constant.BASIC_TYPES; } else if (s.equals("[LandTypes]")) { - tList = CardType.Constant.LAND_TYPES; + addTo = CardType.Constant.LAND_TYPES; } else if (s.equals("[CreatureTypes]")) { - tList = CardType.Constant.CREATURE_TYPES; + addTo = CardType.Constant.CREATURE_TYPES; } else if (s.equals("[SpellTypes]")) { - tList = CardType.Constant.SPELL_TYPES; + addTo = CardType.Constant.SPELL_TYPES; } else if (s.equals("[EnchantmentTypes]")) { - tList = CardType.Constant.ENCHANTMENT_TYPES; + addTo = CardType.Constant.ENCHANTMENT_TYPES; } else if (s.equals("[ArtifactTypes]")) { - tList = CardType.Constant.ARTIFACT_TYPES; + addTo = CardType.Constant.ARTIFACT_TYPES; } else if (s.equals("[WalkerTypes]")) { - tList = CardType.Constant.WALKER_TYPES; + addTo = CardType.Constant.WALKER_TYPES; } else if (s.length() > 1) { - if (tList != null) { + if (addTo != null) { if (s.contains(":")) { String[] k = s.split(":"); - tList.add(k[0]); + addTo.add(k[0]); CardType.Constant.pluralTypes.put(k[0], k[1]); } else { - tList.add(s); + addTo.add(s); } } } diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 053e152fd11..45361909b01 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1034,7 +1034,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont * java.lang.String, java.util.List, java.util.List, java.lang.String) */ @Override - public String chooseSomeType(final String kindOfType, final SpellAbility sa, final List validTypes, + public String chooseSomeType(final String kindOfType, final SpellAbility sa, final Collection validTypes, final List invalidTypes, final boolean isOptional) { final List types = Lists.newArrayList(validTypes); if (invalidTypes != null && !invalidTypes.isEmpty()) {