forked from External/mage
loop to streams
This commit is contained in:
parent
d42b2a6d37
commit
0cb7d8aab6
4 changed files with 67 additions and 90 deletions
|
|
@ -38,6 +38,7 @@ import mage.util.ThreadLocalStringBuilder;
|
|||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @param <T>
|
||||
|
|
@ -117,82 +118,72 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
|
|||
|
||||
@Override
|
||||
public Abilities<ActivatedAbility> getActivatedAbilities(Zone zone) {
|
||||
Abilities<ActivatedAbility> zonedAbilities = new AbilitiesImpl<>();
|
||||
for (T ability : this) {
|
||||
if (ability instanceof ActivatedAbility && ability.getZone().match(zone)) {
|
||||
zonedAbilities.add((ActivatedAbility) ability);
|
||||
}
|
||||
}
|
||||
return zonedAbilities;
|
||||
return stream()
|
||||
.filter(ability -> ability instanceof ActivatedAbility)
|
||||
.filter(ability -> ability.getZone().match(zone))
|
||||
.map(ability -> (ActivatedAbility) ability)
|
||||
.collect(Collectors.toCollection(AbilitiesImpl::new));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Abilities<ActivatedAbility> getPlayableAbilities(Zone zone) {
|
||||
Abilities<ActivatedAbility> zonedAbilities = new AbilitiesImpl<>();
|
||||
for (T ability : this) {
|
||||
if ((ability instanceof ActivatedAbility || (ability instanceof PlayLandAbility))
|
||||
&& ability.getZone().match(zone)) {
|
||||
zonedAbilities.add((ActivatedAbility) ability);
|
||||
}
|
||||
}
|
||||
return zonedAbilities;
|
||||
return stream()
|
||||
.filter(ability -> (ability instanceof ActivatedAbility))
|
||||
.filter(ability -> ability.getZone().match(zone))
|
||||
.map(ability -> (ActivatedAbility) ability)
|
||||
.collect(Collectors.toCollection(AbilitiesImpl::new));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Abilities<ActivatedManaAbilityImpl> getActivatedManaAbilities(Zone zone) {
|
||||
Abilities<ActivatedManaAbilityImpl> abilities = new AbilitiesImpl<>();
|
||||
for (T ability : this) {
|
||||
if (ability instanceof ActivatedManaAbilityImpl && ability.getZone().match(zone)) {
|
||||
abilities.add((ActivatedManaAbilityImpl) ability);
|
||||
}
|
||||
}
|
||||
return abilities;
|
||||
return stream()
|
||||
.filter(ability -> ability instanceof ActivatedManaAbilityImpl)
|
||||
.filter(ability -> ability.getZone().match(zone))
|
||||
.map(ability -> (ActivatedManaAbilityImpl) ability)
|
||||
.collect(Collectors.toCollection(AbilitiesImpl::new));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Abilities<ActivatedManaAbilityImpl> getAvailableActivatedManaAbilities(Zone zone, Game game) {
|
||||
Abilities<ActivatedManaAbilityImpl> abilities = new AbilitiesImpl<>();
|
||||
for (T ability : this) {
|
||||
if (ability instanceof ActivatedManaAbilityImpl && ability.getZone().match(zone)) {
|
||||
if ((((ActivatedManaAbilityImpl) ability).canActivate(ability.getControllerId(), game))) {
|
||||
abilities.add((ActivatedManaAbilityImpl) ability);
|
||||
}
|
||||
}
|
||||
}
|
||||
return abilities;
|
||||
return stream()
|
||||
.filter(ability -> ability instanceof ActivatedManaAbilityImpl)
|
||||
.filter(ability -> ability.getZone().match(zone))
|
||||
.filter(ability -> (((ActivatedManaAbilityImpl) ability).canActivate(ability.getControllerId(), game)))
|
||||
.map(ability -> (ActivatedManaAbilityImpl) ability)
|
||||
.collect(Collectors.toCollection(AbilitiesImpl::new));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Abilities<Ability> getManaAbilities(Zone zone) {
|
||||
Abilities<Ability> abilities = new AbilitiesImpl<>();
|
||||
for (T ability : this) {
|
||||
if (ability.getAbilityType() == AbilityType.MANA && ability.getZone().match(zone)) {
|
||||
abilities.add(ability);
|
||||
}
|
||||
}
|
||||
return abilities;
|
||||
return stream()
|
||||
.filter(ability -> ability.getAbilityType() == AbilityType.MANA)
|
||||
.filter(ability -> ability.getZone().match(zone))
|
||||
.collect(Collectors.toCollection(AbilitiesImpl::new));
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Abilities<EvasionAbility> getEvasionAbilities() {
|
||||
Abilities<EvasionAbility> abilities = new AbilitiesImpl<>();
|
||||
for (T ability : this) {
|
||||
if (ability instanceof EvasionAbility) {
|
||||
abilities.add((EvasionAbility) ability);
|
||||
}
|
||||
}
|
||||
return abilities;
|
||||
return stream()
|
||||
.filter(ability -> ability instanceof EvasionAbility)
|
||||
.map(ability -> (EvasionAbility) ability)
|
||||
.collect(Collectors.toCollection(AbilitiesImpl::new));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Abilities<StaticAbility> getStaticAbilities(Zone zone) {
|
||||
Abilities<StaticAbility> zonedAbilities = new AbilitiesImpl<>();
|
||||
for (T ability : this) {
|
||||
if (ability instanceof StaticAbility && ability.getZone().match(zone)) {
|
||||
zonedAbilities.add((StaticAbility) ability);
|
||||
}
|
||||
}
|
||||
return zonedAbilities;
|
||||
return stream()
|
||||
.filter(ability -> ability instanceof StaticAbility)
|
||||
.filter(ability -> ability.getZone().match(zone))
|
||||
.map(ability -> (StaticAbility) ability)
|
||||
.collect(Collectors.toCollection(AbilitiesImpl::new));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -213,13 +204,11 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
|
|||
|
||||
@Override
|
||||
public Abilities<ProtectionAbility> getProtectionAbilities() {
|
||||
Abilities<ProtectionAbility> abilities = new AbilitiesImpl<>();
|
||||
for (T ability : this) {
|
||||
if (ability instanceof ProtectionAbility) {
|
||||
abilities.add((ProtectionAbility) ability);
|
||||
}
|
||||
}
|
||||
return abilities;
|
||||
return stream()
|
||||
.filter(ability -> ability instanceof ProtectionAbility)
|
||||
.map(ability -> (ProtectionAbility) ability)
|
||||
.collect(Collectors.toCollection(AbilitiesImpl::new));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -305,12 +294,8 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
|
|||
|
||||
@Override
|
||||
public int getOutcomeTotal() {
|
||||
int total = 0;
|
||||
for (T ability : this) {
|
||||
total += ability.getEffects().getOutcomeTotal();
|
||||
}
|
||||
return total;
|
||||
}
|
||||
return stream().mapToInt(ability -> ability.getEffects().getOutcomeTotal()).sum();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue