Now StackAbilityView has sourceCard. Added displaying source card for abilities. Fixed arrows offsets. Added "source" blue arrows (target arrows are red). Fixed NullPointerException happen for AbilityPicker. Fixed random order of spells in stack. Code clean up.

This commit is contained in:
magenoxx 2010-11-27 15:29:48 +00:00
parent a910b59399
commit 03cb41f2aa
10 changed files with 110 additions and 139 deletions

View file

@ -36,11 +36,13 @@ import java.util.UUID;
import mage.ObjectColor;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.abilities.Ability;
import mage.cards.Card;
import mage.game.permanent.Permanent;
import mage.game.permanent.PermanentToken;
import mage.game.permanent.token.Token;
import mage.game.stack.Spell;
import mage.game.stack.StackObject;
import mage.target.Target;
import mage.target.Targets;
@ -65,6 +67,7 @@ public class CardView implements Serializable {
protected Rarity rarity;
protected String expansionSetCode;
protected int cardNumber;
protected boolean isAbility;
public List<UUID> targets;
@ -101,15 +104,7 @@ public class CardView implements Serializable {
if (card instanceof Spell) {
Spell<?> spell = (Spell<?>)card;
if (spell.getSpellAbility().getTargets().size() > 0) {
Targets targets = spell.getSpellAbility().getTargets();
for (Target target : targets) {
if (target.isChosen()) {
for (UUID targetUUID : target.getTargets()) {
if (this.targets == null) this.targets = new ArrayList<UUID>();
this.targets.add(targetUUID);
}
}
}
setTargets(spell.getSpellAbility().getTargets());
}
}
}
@ -135,6 +130,17 @@ public class CardView implements Serializable {
this.expansionSetCode = "";
}
protected void setTargets(Targets targets) {
for (Target target : targets) {
if (target.isChosen()) {
for (UUID targetUUID : target.getTargets()) {
if (this.targets == null) this.targets = new ArrayList<UUID>();
this.targets.add(targetUUID);
}
}
}
}
protected List<String> formatRules(List<String> rules) {
List<String> newRules = new ArrayList<String>();
for (String rule: rules) {
@ -156,7 +162,19 @@ public class CardView implements Serializable {
public List<String> getRules() {
return rules;
}
public void overrideRules(List<String> rules) {
this.rules = rules;
}
public void setIsAbility(boolean isAbility) {
this.isAbility = isAbility;
}
public boolean isAbility() {
return isAbility;
}
public String getPower() {
return power;
}
@ -218,6 +236,10 @@ public class CardView implements Serializable {
return targets;
}
public void overrideTargets(List<UUID> newTargets) {
this.targets = newTargets;
}
@Override
public String toString() {
return getName() + " [" + getId() + "]";

View file

@ -31,9 +31,11 @@ package mage.view;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import mage.MageObject;
import mage.Constants.PhaseStep;
import mage.Constants.TurnPhase;
import mage.MageObject;
import mage.cards.Card;
import mage.game.ExileZone;
import mage.game.Game;
import mage.game.GameState;
@ -68,10 +70,11 @@ public class GameView implements Serializable {
for (StackObject stackObject: state.getStack()) {
if (stackObject instanceof StackAbility) {
MageObject object = game.getObject(stackObject.getSourceId());
Card card = game.getCard(stackObject.getSourceId());
if (object != null)
stack.put(stackObject.getId(), new StackAbilityView((StackAbility)stackObject, object.getName()));
stack.put(stackObject.getId(), new StackAbilityView((StackAbility)stackObject, object.getName(), new CardView(card)));
else
stack.put(stackObject.getId(), new StackAbilityView((StackAbility)stackObject, ""));
stack.put(stackObject.getId(), new StackAbilityView((StackAbility)stackObject, "", new CardView(card)));
}
else {
stack.put(stackObject.getId(), new CardView((Spell)stackObject));

View file

@ -29,6 +29,7 @@
package mage.view;
import java.util.ArrayList;
import mage.game.stack.StackAbility;
/**
@ -38,11 +39,13 @@ import mage.game.stack.StackAbility;
public class StackAbilityView extends CardView {
private String sourceName;
private CardView sourceCard;
public StackAbilityView(StackAbility ability, String sourceName) {
public StackAbilityView(StackAbility ability, String sourceName, CardView sourceCard) {
this.id = ability.getId();
this.name = "Ability";
this.sourceName = sourceName;
this.sourceCard = sourceCard;
this.rules = new ArrayList<String>();
rules.add(formatRule(ability.getRule()));
this.power = ability.getPower().toString();
@ -54,6 +57,7 @@ public class StackAbilityView extends CardView {
this.color = ability.getColor();
this.manaCost = ability.getManaCost().getSymbols();
this.art = "";
setTargets(ability.getTargets());
}
@Override
@ -62,5 +66,8 @@ public class StackAbilityView extends CardView {
newRule.replace("{source}", this.sourceName);
return newRule;
}
public CardView getSourceCard() {
return this.sourceCard;
}
}