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

@ -40,8 +40,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
private static final Logger logger = Logger.getLogger(CardImpl.class);
protected UUID ownerId;
protected String cardNumber;
protected String expansionSetCode;
protected Rarity rarity;
protected Class<? extends Card> secondSideCardClazz;
protected Class<? extends Card> meldsWithClazz;
@ -59,12 +57,12 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
public CardImpl(UUID ownerId, CardSetInfo setInfo, CardType[] cardTypes, String costs) {
this(ownerId, setInfo, cardTypes, costs, SpellAbilityType.BASE);
}
public CardImpl(UUID ownerId, CardSetInfo setInfo, CardType[] cardTypes, String costs, SpellAbilityType spellAbilityType) {
this(ownerId, setInfo.getName());
this.rarity = setInfo.getRarity();
this.cardNumber = setInfo.getCardNumber();
this.expansionSetCode = setInfo.getExpansionSetCode();
this.setExpansionSetCode(setInfo.getExpansionSetCode());
this.setCardNumber(setInfo.getCardNumber());
this.cardType.addAll(Arrays.asList(cardTypes));
this.manaCost.load(costs);
setDefaultColor();
@ -104,6 +102,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
}
protected CardImpl(UUID ownerId, String name) {
super();
this.ownerId = ownerId;
this.name = name;
}
@ -117,8 +116,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
public CardImpl(final CardImpl card) {
super(card);
ownerId = card.ownerId;
cardNumber = card.cardNumber;
expansionSetCode = card.expansionSetCode;
rarity = card.rarity;
secondSideCardClazz = card.secondSideCardClazz;
@ -199,11 +196,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
return ownerId;
}
@Override
public String getCardNumber() {
return cardNumber;
}
@Override
public Rarity getRarity() {
return rarity;
@ -369,11 +361,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
abilities.setControllerId(ownerId);
}
@Override
public String getExpansionSetCode() {
return expansionSetCode;
}
@Override
public List<Mana> getMana() {
List<Mana> mana = new ArrayList<>();
@ -634,11 +621,11 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
// must be non strict search in any sets, not one set
// example: if set contains only one card side
// method used in cards database creating, so can't use repository here
ExpansionSet.SetCardInfo info = Sets.findCardByClass(cardClazz, expansionSetCode, cardNumber);
ExpansionSet.SetCardInfo info = Sets.findCardByClass(cardClazz, this.getExpansionSetCode(), this.getCardNumber());
if (info == null) {
return null;
}
return createCard(cardClazz, new CardSetInfo(info.getName(), expansionSetCode, info.getCardNumber(), info.getRarity(), info.getGraphicInfo()));
return createCard(cardClazz, new CardSetInfo(info.getName(), this.getExpansionSetCode(), info.getCardNumber(), info.getRarity(), info.getGraphicInfo()));
}
@Override