Fix crash in WrappedAbility

This commit is contained in:
drdev
2014-10-06 05:41:24 +00:00
parent 2cedade957
commit 755fcfc087
3 changed files with 34 additions and 20 deletions

View File

@@ -18,6 +18,7 @@
package forge.game.spellability; package forge.game.spellability;
import com.esotericsoftware.minlog.Log; import com.esotericsoftware.minlog.Log;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.game.Game; import forge.game.Game;
import forge.game.card.Card; import forge.game.card.Card;
@@ -33,22 +34,19 @@ import forge.game.cost.Cost;
*/ */
public abstract class Ability extends SpellAbility { public abstract class Ability extends SpellAbility {
/** protected Ability(final Card sourceCard, final ManaCost manaCost) {
* <p> this(sourceCard, new Cost(manaCost, true), null);
* Constructor for Ability.
* </p>
*
* @param sourceCard
* a {@link forge.game.card.Card} object.
* @param manaCost
* a {@link java.lang.String} object.
*/
public Ability(final Card sourceCard, final ManaCost manaCost) {
this(sourceCard, new Cost(manaCost, true));
} }
public Ability(final Card sourceCard, final Cost cost) { protected Ability(final Card sourceCard, final ManaCost manaCost, SpellAbilityView view0) {
super(sourceCard, cost); this(sourceCard, new Cost(manaCost, true), view0);
} }
protected Ability(final Card sourceCard, final Cost cost) {
this(sourceCard, cost, null);
}
protected Ability(final Card sourceCard, final Cost cost, SpellAbilityView view0) {
super(sourceCard, cost, view0);
}
/** /**
* <p> * <p>
* Constructor for Ability. * Constructor for Ability.
@@ -78,7 +76,7 @@ public abstract class Ability extends SpellAbility {
return this.getHostCard().isInPlay() && !this.getHostCard().isFaceDown(); return this.getHostCard().isInPlay() && !this.getHostCard().isFaceDown();
} }
public static final Ability PLAY_LAND_SURROGATE = new Ability(null, (Cost)null){ public static final Ability PLAY_LAND_SURROGATE = new Ability(null, (Cost)null, null){
@Override @Override
public boolean canPlay() { public boolean canPlay() {
return true; //if this ability is added anywhere, it can be assumed that land can be played return true; //if this ability is added anywhere, it can be assumed that land can be played

View File

@@ -134,11 +134,17 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
private final SpellAbilityView view; private final SpellAbilityView view;
public SpellAbility(final Card iSourceCard, Cost toPay) { protected SpellAbility(final Card iSourceCard, Cost toPay) {
this(iSourceCard, toPay, null);
}
protected SpellAbility(final Card iSourceCard, Cost toPay, SpellAbilityView view0) {
id = nextId(); id = nextId();
hostCard = iSourceCard; hostCard = iSourceCard;
payCosts = toPay; payCosts = toPay;
view = new SpellAbilityView(this); if (view0 == null) {
view0 = new SpellAbilityView(this);
}
view = view0;
} }
@Override @Override

View File

@@ -30,9 +30,9 @@ public class WrappedAbility extends Ability implements ISpellAbility {
boolean mandatory = false; boolean mandatory = false;
public WrappedAbility(final Trigger regTrig, final SpellAbility sa0, final Player decider0) { public WrappedAbility(final Trigger regtrig0, final SpellAbility sa0, final Player decider0) {
super(sa0.getHostCard(), ManaCost.ZERO); super(regtrig0.getHostCard(), ManaCost.ZERO, sa0.getView());
regtrig = regTrig; regtrig = regtrig0;
sa = sa0; sa = sa0;
decider = decider0; decider = decider0;
} }
@@ -177,6 +177,16 @@ public class WrappedAbility extends Ability implements ISpellAbility {
return sa.getRestrictions(); return sa.getRestrictions();
} }
@Override
public Card getHostCard() {
return sa.getHostCard();
}
@Override
public SpellAbilityView getView() {
return sa.getView();
}
@Override @Override
public String getStackDescription() { public String getStackDescription() {
final StringBuilder sb = new StringBuilder(regtrig.toString()); final StringBuilder sb = new StringBuilder(regtrig.toString());