AbilityFactory: removed unneeded special cases

This commit is contained in:
Hanmac
2016-12-29 16:15:26 +00:00
parent 256f539cb0
commit 0b087fc884

View File

@@ -31,8 +31,6 @@ import java.util.Map;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.Arrays;
/** /**
* <p> * <p>
@@ -218,11 +216,9 @@ public final class AbilityFactory {
final String name = mapParams.get("SubAbility"); final String name = mapParams.get("SubAbility");
SpellAbility p = parent; SpellAbility p = parent;
AbilitySub sub = null; AbilitySub sub = null;
boolean exist = false;
while (p != null) { while (p != null) {
sub = p.getAdditonalAbility(name); sub = p.getAdditonalAbility(name);
if (sub != null) { if (sub != null) {
exist = true;
break; break;
} }
p = p.getParent(); p = p.getParent();
@@ -232,27 +228,13 @@ public final class AbilityFactory {
} }
spellAbility.setSubAbility(sub); spellAbility.setSubAbility(sub);
spellAbility.setAdditionalAbility(name, sub); spellAbility.setAdditionalAbility(name, sub);
if (!exist) {
for (final String key : additionalAbilityKeys) {
if (sub.hasParam(key) && sub.getAdditonalAbility(key) == null) {
sub.setAdditionalAbility(key, getSubAbility(hostCard, sub.getParam(key), sub));
}
}
}
} }
// FIXME: this is a list of APIs that fail to work unless additional abilities are created for them below.
// Is there are reason we are not just creating additional abilities by default for all APIs?
List<ApiType> apiList = new ArrayList<>(Arrays.asList(ApiType.Charm, ApiType.Repeat, ApiType.RepeatEach));
if (type != AbilityRecordType.SubAbility || parent == null || apiList.contains(parent.getApi())) {
for (final String key : additionalAbilityKeys) { for (final String key : additionalAbilityKeys) {
if (mapParams.containsKey(key) && spellAbility.getAdditonalAbility(key) == null) { if (mapParams.containsKey(key) && spellAbility.getAdditonalAbility(key) == null) {
spellAbility.setAdditionalAbility(key, getSubAbility(hostCard, mapParams.get(key), spellAbility)); spellAbility.setAdditionalAbility(key, getSubAbility(hostCard, mapParams.get(key), spellAbility));
} }
} }
}
if (api == ApiType.Charm || api == ApiType.GenericChoice) { if (api == ApiType.Charm || api == ApiType.GenericChoice) {
final String key = "Choices"; final String key = "Choices";