Added the possibility to hide a ability for rule text generation.

This commit is contained in:
LevelX2 2013-03-04 00:05:52 +01:00
parent dc131fa8dd
commit 31616f876e
4 changed files with 50 additions and 2 deletions

View file

@ -71,6 +71,9 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
List<String> rules = new ArrayList<String>(); List<String> rules = new ArrayList<String>();
for (T ability:this) { for (T ability:this) {
if (!ability.getRuleVisible()) {
continue;
}
if (!(ability instanceof SpellAbility || ability instanceof PlayLandAbility)) { if (!(ability instanceof SpellAbility || ability instanceof PlayLandAbility)) {
if (ability.getRuleAtTheTop()) { if (ability.getRuleAtTheTop()) {
rules.add(0, ability.getRule()); rules.add(0, ability.getRule());
@ -304,7 +307,9 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
public String getValue() { public String getValue() {
List<String> abilities = new ArrayList<String>(); List<String> abilities = new ArrayList<String>();
for (T ability: this) { for (T ability: this) {
abilities.add(ability.toString()); if (ability.toString() != null) {
abilities.add(ability.toString());
}
} }
Collections.sort(abilities); Collections.sort(abilities);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();

View file

@ -375,10 +375,30 @@ public interface Ability extends Controllable, Serializable {
/** /**
* Sets the value for the ruleAtTheTop attribute * Sets the value for the ruleAtTheTop attribute
* *
* true = show the rule at the top position of the rules
*
* @param ruleAtTheTop * @param ruleAtTheTop
*/ */
void setRuleAtTheTop(boolean ruleAtTheTop); void setRuleAtTheTop(boolean ruleAtTheTop);
/**
* Returns true if this ability's rule is visible on the card tooltip
*
* @return
*/
boolean getRuleVisible();
/**
* Sets the value for the ruleVisible attribute
*
* true = rule will be shown for the card / permanent
* false = rule won't be shown
*
* @param ruleAtTheTop
*/
void setRuleVisible(boolean ruleVisible);
/** /**
* Get the originalId of the ability * Get the originalId of the ability
* *

View file

@ -77,6 +77,7 @@ public abstract class AbilityImpl<T extends AbilityImpl<T>> implements Ability {
protected String name; protected String name;
protected boolean usesStack = true; protected boolean usesStack = true;
protected boolean ruleAtTheTop = false; protected boolean ruleAtTheTop = false;
protected boolean ruleVisible = true;
@Override @Override
public abstract T copy(); public abstract T copy();
@ -111,6 +112,7 @@ public abstract class AbilityImpl<T extends AbilityImpl<T>> implements Ability {
} }
this.modes = ability.modes.copy(); this.modes = ability.modes.copy();
this.ruleAtTheTop = ability.ruleAtTheTop; this.ruleAtTheTop = ability.ruleAtTheTop;
this.ruleVisible = ability.ruleVisible;
} }
@Override @Override
@ -417,7 +419,7 @@ public abstract class AbilityImpl<T extends AbilityImpl<T>> implements Ability {
protected String formatRule(String rule, String source) { protected String formatRule(String rule, String source) {
String replace = rule; String replace = rule;
if (source != null && !source.isEmpty()) { if (rule != null && source != null && !source.isEmpty()) {
replace = rule.replace("{this}", source); replace = rule.replace("{this}", source);
replace = replace.replace("{source}", source); replace = replace.replace("{source}", source);
} }
@ -574,6 +576,17 @@ public abstract class AbilityImpl<T extends AbilityImpl<T>> implements Ability {
this.ruleAtTheTop = ruleAtTheTop; this.ruleAtTheTop = ruleAtTheTop;
} }
@Override
public boolean getRuleVisible() {
return ruleVisible;
}
@Override
public void setRuleVisible(boolean ruleVisible) {
this.ruleVisible = ruleVisible;
}
@Override @Override
public UUID getOriginalId() { public UUID getOriginalId() {
return this.originalId; return this.originalId;

View file

@ -373,6 +373,16 @@ public class StackAbility implements StackObject, Ability {
this.ability.setRuleAtTheTop(ruleAtTheTop); this.ability.setRuleAtTheTop(ruleAtTheTop);
} }
@Override
public boolean getRuleVisible() {
return this.ability.getRuleVisible();
}
@Override
public void setRuleVisible(boolean ruleVisible) {
this.ability.setRuleVisible(ruleVisible);
}
@Override @Override
public UUID getOriginalId() { public UUID getOriginalId() {
return this.ability.getOriginalId(); return this.ability.getOriginalId();