package mage.abilities;
import java.util.Arrays;
import java.util.List;
/**
* @author noxx
*/
public class CompoundAbility extends AbilitiesImpl<Ability> {
private String ruleText;
public CompoundAbility(Ability... abilities) {
this(null, abilities);
}
public CompoundAbility(String ruleText, Ability... abilities) {
addAll(Arrays.asList(abilities));
}
public CompoundAbility(final CompoundAbility compoundAbility) {
for (Ability ability : compoundAbility) {
add(ability);
}
this.ruleText = compoundAbility.ruleText;
}
public String getRule() {
if (ruleText != null) {
return ruleText;
}
StringBuilder sb = new StringBuilder();
List<String> rules = super.getRules(null);
for (int index = 0; index < rules.size(); index++) {
if (index > 0) {
if (index < rules.size() - 1) {
sb.append(", ");
} else {
sb.append(" and ");
}
}
sb.append(rules.get(index));
}
// we can't simply cache it to this.ruleText as some cards may change abilities dynamically
return sb.toString();
}
@Override
public CompoundAbility copy() {
return new CompoundAbility(this);
}
}