use MagicAbilityList instead of Set<MagicAbility> to handle abilities with implementation
parent
4abb79f8ce
commit
abb0c925a4
|
@ -885,6 +885,14 @@ public enum MagicAbility {
|
||||||
return abilityList;
|
return abilityList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static MagicAbilityList getAbilityList(final Set<MagicAbility> abilities) {
|
||||||
|
final MagicAbilityList abilityList = new MagicAbilityList();
|
||||||
|
for (final MagicAbility ability : abilities) {
|
||||||
|
ability.addAbility(abilityList, ability.getName());
|
||||||
|
}
|
||||||
|
return abilityList;
|
||||||
|
}
|
||||||
|
|
||||||
private static final Pattern SUB_ABILITY_LIST = Pattern.compile("\"([^\"]*)\"|([A-Za-z][^,]*)");
|
private static final Pattern SUB_ABILITY_LIST = Pattern.compile("\"([^\"]*)\"|([A-Za-z][^,]*)");
|
||||||
|
|
||||||
public static MagicAbility getAbility(final String names) {
|
public static MagicAbility getAbility(final String names) {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package magic.model.action;
|
||||||
import magic.model.MagicAbility;
|
import magic.model.MagicAbility;
|
||||||
import magic.model.MagicGame;
|
import magic.model.MagicGame;
|
||||||
import magic.model.MagicPermanent;
|
import magic.model.MagicPermanent;
|
||||||
|
import magic.model.MagicAbilityList;
|
||||||
import magic.model.mstatic.MagicLayer;
|
import magic.model.mstatic.MagicLayer;
|
||||||
import magic.model.mstatic.MagicStatic;
|
import magic.model.mstatic.MagicStatic;
|
||||||
|
|
||||||
|
@ -14,12 +15,12 @@ import java.util.List;
|
||||||
public class MagicGainAbilityAction extends MagicAction {
|
public class MagicGainAbilityAction extends MagicAction {
|
||||||
|
|
||||||
private final MagicPermanent permanent;
|
private final MagicPermanent permanent;
|
||||||
private final Set<MagicAbility> abilities;
|
private final MagicAbilityList abilityList;
|
||||||
private final boolean duration;
|
private final boolean duration;
|
||||||
|
|
||||||
public MagicGainAbilityAction(final MagicPermanent permanent,final Set<MagicAbility> abilities, final boolean duration) {
|
public MagicGainAbilityAction(final MagicPermanent permanent,final Set<MagicAbility> abilities, final boolean duration) {
|
||||||
this.permanent=permanent;
|
this.permanent=permanent;
|
||||||
this.abilities=abilities;
|
this.abilityList=MagicAbility.getAbilityList(abilities);
|
||||||
this.duration=duration;
|
this.duration=duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,15 +42,13 @@ public class MagicGainAbilityAction extends MagicAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAction(final MagicGame game) {
|
public void doAction(final MagicGame game) {
|
||||||
game.doAction(new MagicAddStaticAction(permanent, new MagicStatic(
|
game.doAction(new MagicAddStaticAction(permanent, new MagicStatic(MagicLayer.Ability, duration) {
|
||||||
MagicLayer.Ability,
|
|
||||||
duration) {
|
|
||||||
@Override
|
@Override
|
||||||
public void modAbilityFlags(
|
public void modAbilityFlags(
|
||||||
final MagicPermanent source,
|
final MagicPermanent source,
|
||||||
final MagicPermanent permanent,
|
final MagicPermanent permanent,
|
||||||
final Set<MagicAbility> flags) {
|
final Set<MagicAbility> flags) {
|
||||||
flags.addAll(abilities);
|
abilityList.giveAbility(permanent, flags);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -60,6 +59,6 @@ public class MagicGainAbilityAction extends MagicAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return super.toString() + " (" + permanent + "," + abilities + ')';
|
return super.toString() + " (" + permanent + "," + abilityList + ')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue