From 755fcfc0873b01e0e1baf5b94a12dfdfc6373eba Mon Sep 17 00:00:00 2001 From: drdev Date: Mon, 6 Oct 2014 05:41:24 +0000 Subject: [PATCH] Fix crash in WrappedAbility --- .../java/forge/game/spellability/Ability.java | 28 +++++++++---------- .../forge/game/spellability/SpellAbility.java | 10 +++++-- .../forge/game/trigger/WrappedAbility.java | 16 +++++++++-- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/forge-game/src/main/java/forge/game/spellability/Ability.java b/forge-game/src/main/java/forge/game/spellability/Ability.java index f68a526598d..c7c2e494f26 100644 --- a/forge-game/src/main/java/forge/game/spellability/Ability.java +++ b/forge-game/src/main/java/forge/game/spellability/Ability.java @@ -18,6 +18,7 @@ package forge.game.spellability; import com.esotericsoftware.minlog.Log; + import forge.card.mana.ManaCost; import forge.game.Game; import forge.game.card.Card; @@ -33,22 +34,19 @@ import forge.game.cost.Cost; */ public abstract class Ability extends SpellAbility { - /** - *

- * Constructor for Ability. - *

- * - * @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)); + protected Ability(final Card sourceCard, final ManaCost manaCost) { + this(sourceCard, new Cost(manaCost, true), null); } - public Ability(final Card sourceCard, final Cost cost) { - super(sourceCard, cost); + protected Ability(final Card sourceCard, final ManaCost manaCost, SpellAbilityView view0) { + 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); + } + /** *

* Constructor for Ability. @@ -78,7 +76,7 @@ public abstract class Ability extends SpellAbility { 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 public boolean canPlay() { return true; //if this ability is added anywhere, it can be assumed that land can be played diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index d2b7e9d1fa8..331f1144cfe 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -134,11 +134,17 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit 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(); hostCard = iSourceCard; payCosts = toPay; - view = new SpellAbilityView(this); + if (view0 == null) { + view0 = new SpellAbilityView(this); + } + view = view0; } @Override diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index f5ab983a735..b5cd02da052 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -30,9 +30,9 @@ public class WrappedAbility extends Ability implements ISpellAbility { boolean mandatory = false; - public WrappedAbility(final Trigger regTrig, final SpellAbility sa0, final Player decider0) { - super(sa0.getHostCard(), ManaCost.ZERO); - regtrig = regTrig; + public WrappedAbility(final Trigger regtrig0, final SpellAbility sa0, final Player decider0) { + super(regtrig0.getHostCard(), ManaCost.ZERO, sa0.getView()); + regtrig = regtrig0; sa = sa0; decider = decider0; } @@ -177,6 +177,16 @@ public class WrappedAbility extends Ability implements ISpellAbility { return sa.getRestrictions(); } + @Override + public Card getHostCard() { + return sa.getHostCard(); + } + + @Override + public SpellAbilityView getView() { + return sa.getView(); + } + @Override public String getStackDescription() { final StringBuilder sb = new StringBuilder(regtrig.toString());