Tokens and command objects reworked (part 1 of 2):

- fixed that copy effect doesn't restore original image after effect's end;
 - removed outdated availableImageSetCodes (all images auto-selected from tokens database now, related to #10139);
 - refactor command objects to use CommandObjectImpl;
 - refactor planes/emblems/etc objects to use MageObjectImpl, added copyable support;
 - refactor another game objects to remove some duplicated fields;
This commit is contained in:
Oleg Agafonov 2023-05-08 02:15:07 +04:00
parent 46f6593da8
commit 5f55c7c667
45 changed files with 517 additions and 477 deletions

View file

@ -29,18 +29,26 @@ public abstract class MageObjectImpl implements MageObject {
protected String name;
protected ManaCosts<ManaCost> manaCost;
protected ObjectColor color;
protected ObjectColor frameColor;
protected FrameStyle frameStyle;
private String expansionSetCode = "";
private String cardNumber = "";
private int imageNumber = 0;
protected List<CardType> cardType = new ArrayList<>();
protected SubTypes subtype = new SubTypes();
protected Set<SuperType> supertype = EnumSet.noneOf(SuperType.class);
protected Abilities<Ability> abilities;
protected String text;
protected MageInt power;
protected MageInt toughness;
protected int startingLoyalty = -1; // -2 means X, -1 means none, 0 and up is normal
protected int startingDefense = -1; // -2 means X, -1 means none, 0 and up is normal
protected boolean copy;
protected MageObject copyFrom; // copied card INFO (used to call original adjusters)
@ -67,6 +75,9 @@ public abstract class MageObjectImpl implements MageObject {
color = object.color.copy();
frameColor = object.frameColor.copy();
frameStyle = object.frameStyle;
expansionSetCode = object.expansionSetCode;
cardNumber = object.cardNumber;
imageNumber = object.imageNumber;
power = object.power.copy();
toughness = object.toughness.copy();
startingLoyalty = object.startingLoyalty;
@ -99,11 +110,6 @@ public abstract class MageObjectImpl implements MageObject {
return GameLog.getColoredObjectIdName(this);
}
@Override
public String getImageName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
@ -233,6 +239,36 @@ public abstract class MageObjectImpl implements MageObject {
return frameStyle;
}
@Override
public String getExpansionSetCode() {
return expansionSetCode;
}
@Override
public void setExpansionSetCode(String expansionSetCode) {
this.expansionSetCode = expansionSetCode;
}
@Override
public String getCardNumber() {
return cardNumber;
}
@Override
public void setCardNumber(String cardNumber) {
this.cardNumber = cardNumber;
}
@Override
public Integer getImageNumber() {
return imageNumber;
}
@Override
public void setImageNumber(Integer imageNumber) {
this.imageNumber = imageNumber;
}
@Override
public ManaCosts<ManaCost> getManaCost() {
return manaCost;