Use Sets instead of Lists for card types to avoid slow lookups.

This commit is contained in:
Alexei Svitkine
2019-12-19 20:49:29 -05:00
parent e0fb373b3d
commit 3d59118b94
7 changed files with 32 additions and 32 deletions

View File

@@ -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<String> typeListFile = FileUtil.readFile(ForgeConstants.TYPE_LIST_FILE);
List<String> tList = null;
Set<String> 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);
}
}
}

View File

@@ -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<String> validTypes,
public String chooseSomeType(final String kindOfType, final SpellAbility sa, final Collection<String> validTypes,
final List<String> invalidTypes, final boolean isOptional) {
final List<String> types = Lists.newArrayList(validTypes);
if (invalidTypes != null && !invalidTypes.isEmpty()) {