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

@ -241,9 +241,8 @@ public class MageBook extends JComponent {
Constructor<?> cons = c.getConstructor();
Object newToken = cons.newInstance();
if (newToken instanceof Token) {
((Token) newToken).setOriginalExpansionSetCode(currentSet);
((Token) newToken).setExpansionSetCodeForImage(currentSet);
((Token) newToken).setTokenType(token.getImageNumber()); // must be called after set code, so it keep the type
((Token) newToken).setExpansionSetCode(currentSet);
((Token) newToken).setImageNumber(token.getImageNumber());
res.add(newToken);
}
} catch (Exception e) {
@ -262,7 +261,7 @@ public class MageBook extends JComponent {
Constructor<?> cons = c.getConstructor();
Object newEmblem = cons.newInstance();
if (newEmblem instanceof Emblem) {
((Emblem) newEmblem).setExpansionSetCodeForImage(currentSet);
((Emblem) newEmblem).setExpansionSetCode(currentSet);
res.add(newEmblem);
}
} catch (Exception e) {
@ -281,7 +280,7 @@ public class MageBook extends JComponent {
Constructor<?> cons = c.getConstructor();
Object newPlane = cons.newInstance();
if (newPlane instanceof Plane) {
((Plane) newPlane).setExpansionSetCodeForImage(currentSet);
((Plane) newPlane).setExpansionSetCode(currentSet);
res.add(newPlane);
}
} catch (Exception e) {
@ -300,7 +299,7 @@ public class MageBook extends JComponent {
Constructor<?> cons = c.getConstructor();
Object newDungeon = cons.newInstance();
if (newDungeon instanceof Dungeon) {
((Dungeon) newDungeon).setExpansionSetCodeForImage(currentSet);
((Dungeon) newDungeon).setExpansionSetCode(currentSet);
res.add(newDungeon);
}
} catch (Exception e) {

View file

@ -213,8 +213,7 @@ public class TestCardRenderDialog extends MageDialog {
private CardView createToken(Game game, UUID controllerId, Token token, String code, int damage, boolean tapped, boolean transformed) {
Token sourceToken = token.copy();
sourceToken.setExpansionSetCodeForImage(code);
sourceToken.setOriginalExpansionSetCode(code);
sourceToken.setExpansionSetCode(code);
PermanentToken perm = new PermanentToken(sourceToken, controllerId, game);
Set<Card> cardsList = new HashSet<>();

View file

@ -131,7 +131,7 @@ public class CardPanelRenderModeMTGO extends CardPanel {
sb.append(this.view.getLoyalty());
sb.append(this.view.getDefense());
sb.append(this.view.getColor().toString());
sb.append(this.view.getType());
sb.append(this.view.getImageNumber());
sb.append(this.view.getExpansionSetCode());
for (CardType type : this.view.getCardTypes()) {
sb.append((char) type.ordinal());

View file

@ -369,7 +369,7 @@ public class ModernCardRenderer extends CardRenderer {
}
private float getTypeLineYFrac() {
if (cardView.isToken() && cardView.getCardNumber() == null) {
if (cardView.isToken() && cardView.getCardNumber().isEmpty()) {
return TYPE_LINE_Y_FRAC_TOKEN;
} else if (cardView.getFrameStyle().isFullArt()) {
return TYPE_LINE_Y_FRAC_FULL_ART;

View file

@ -344,7 +344,7 @@ public final class ImageCache {
private static String getKey(CardView card, String cardName, int imageSize) {
return (card.isToken() ? cardName.replace(" Token", "") : cardName)
+ '#' + card.getExpansionSetCode()
+ '#' + card.getType()
+ '#' + card.getImageNumber()
+ '#' + card.getCardNumber()
+ '#' + imageSize
+ (card.getUsesVariousArt() ? "#usesVariousArt" : "");