Feature: Retro Border Renderer (#13563)

* Add Retro Card Renderer

* Updated old sets with retro frames

Adds sets:
* 30th Anniversary Play Promos
* 30th Anniversary Misc Promos
* Eternal Weekend
* MagicFest 2025
* Modern Horizon 2 Timeshifts
This commit is contained in:
Jmlundeen 2025-04-22 17:37:57 -05:00 committed by GitHub
parent 36196742ad
commit e34ebe740e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
151 changed files with 16549 additions and 14836 deletions

View file

@ -90,6 +90,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
public static final String KEY_CARD_IMAGES_PREF_LANGUAGE = "cardImagesPreferredImageLaguage";
public static final String KEY_CARD_RENDERING_IMAGE_MODE = "cardRenderingFallback";
public static final String KEY_CARD_RENDERING_ENABLE_RETRO_FRAMES = "cardRenderingRetroFrames";
public static final String KEY_CARD_RENDERING_ICONS_FOR_ABILITIES = "cardRenderingIconsForAbilities";
public static final String KEY_CARD_RENDERING_ICONS_FOR_PLAYABLE = "cardRenderingIconsForPlayable";
public static final String KEY_CARD_RENDERING_REMINDER_TEXT = "cardRenderingReminderText";
@ -962,6 +963,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
labelPreferredImageLanguage = new javax.swing.JLabel();
panelCardStyles = new javax.swing.JPanel();
cbCardRenderImageFallback = new javax.swing.JCheckBox();
cbCardRenderRetroFrames = new javax.swing.JCheckBox();
cbCardRenderIconsForAbilities = new javax.swing.JCheckBox();
cbCardRenderIconsForPlayable = new javax.swing.JCheckBox();
jSeparator1 = new javax.swing.JSeparator();
@ -2328,6 +2330,9 @@ public class PreferencesDialog extends javax.swing.JDialog {
cbCardRenderImageFallback.setText("Render mode: MTGO style (off) or IMAGE style (on)");
panelCardStyles.add(cbCardRenderImageFallback);
cbCardRenderRetroFrames.setText("Force retro frames (MTGO render mode will use old border for all cards)");
panelCardStyles.add(cbCardRenderRetroFrames);
cbCardRenderIconsForAbilities.setText("Enable card icons for abilities (example: flying, deathtouch)");
panelCardStyles.add(cbCardRenderIconsForAbilities);
@ -3034,6 +3039,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
// rendering
save(prefs, dialog.cbCardRenderImageFallback, KEY_CARD_RENDERING_IMAGE_MODE, "true", "false");
save(prefs, dialog.cbCardRenderRetroFrames, KEY_CARD_RENDERING_ENABLE_RETRO_FRAMES, "true", "false");
save(prefs, dialog.cbCardRenderIconsForAbilities, KEY_CARD_RENDERING_ICONS_FOR_ABILITIES, "true", "false");
save(prefs, dialog.cbCardRenderIconsForPlayable, KEY_CARD_RENDERING_ICONS_FOR_PLAYABLE, "true", "false");
save(prefs, dialog.cbCardRenderHideSetSymbol, KEY_CARD_RENDERING_SET_SYMBOL, "true", "false");
@ -3485,6 +3491,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
// rendering settings
load(prefs, dialog.cbCardRenderImageFallback, KEY_CARD_RENDERING_IMAGE_MODE, "true", "false");
load(prefs, dialog.cbCardRenderRetroFrames, KEY_CARD_RENDERING_ENABLE_RETRO_FRAMES, "true", "false");
load(prefs, dialog.cbCardRenderIconsForAbilities, KEY_CARD_RENDERING_ICONS_FOR_ABILITIES, "true", "true");
load(prefs, dialog.cbCardRenderIconsForPlayable, KEY_CARD_RENDERING_ICONS_FOR_PLAYABLE, "true", "true");
load(prefs, dialog.cbCardRenderHideSetSymbol, KEY_CARD_RENDERING_SET_SYMBOL, "true");
@ -3815,6 +3822,10 @@ public class PreferencesDialog extends javax.swing.JDialog {
}
}
public static boolean getRenderRetroFrames() {
return (getCachedValue(PreferencesDialog.KEY_CARD_RENDERING_ENABLE_RETRO_FRAMES, "true").endsWith("true"));
}
public static boolean getRenderIconsForAbilities() {
return (getCachedValue(PreferencesDialog.KEY_CARD_RENDERING_ICONS_FOR_ABILITIES, "true").equals("true"));
}
@ -4043,6 +4054,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
private javax.swing.JCheckBox cbCardRenderIconsForAbilities;
private javax.swing.JCheckBox cbCardRenderIconsForPlayable;
private javax.swing.JCheckBox cbCardRenderImageFallback;
private javax.swing.JCheckBox cbCardRenderRetroFrames;
private javax.swing.JCheckBox cbCardRenderShowAbilityTextOverlay;
private javax.swing.JCheckBox cbCardRenderShowReminderText;
private javax.swing.JCheckBox cbConfirmEmptyManaPool;

View file

@ -1,5 +1,7 @@
package org.mage.card.arcane;
import mage.cards.FrameStyle;
import mage.client.dialog.PreferencesDialog;
import mage.view.CardView;
/**
@ -13,6 +15,8 @@ public class CardRendererFactory {
public CardRenderer create(CardView card) {
if (card.isSplitCard()) {
return new ModernSplitCardRenderer(card);
} else if (card.getFrameStyle().equals(FrameStyle.RETRO) || card.getFrameStyle().equals(FrameStyle.LEA_ORIGINAL_DUAL_LAND_ART_BASIC) || PreferencesDialog.getRenderRetroFrames()) {
return new RetroCardRenderer(card);
} else {
return new ModernCardRenderer(card);
}

View file

@ -318,7 +318,8 @@ public class ModernCardRenderer extends CardRenderer {
} else if (isUnstableFullArtLand()) {
rect = new Rectangle2D.Float(.0f, .0f, 1.0f, 1.0f);
} else if (cardView.getArtRect() == ArtRect.FULL_LENGTH_LEFT ||
cardView.getArtRect() == ArtRect.FULL_LENGTH_RIGHT) {
cardView.getArtRect() == ArtRect.FULL_LENGTH_RIGHT ||
cardView.getArtRect() == ArtRect.RETRO) {
rect = cardView.getArtRect().rect;
} else if (cardView.getFrameStyle().isFullArt() || (cardView.isToken())) {
rect = new Rectangle2D.Float(.079f, .11f, .84f, .63f);

File diff suppressed because it is too large Load diff

View file

@ -543,6 +543,9 @@ public class ScryfallImageSupportCards {
add("MAT"); // March of the Machine: The Aftermath
add("MUL"); // Multiverse Legends
add("30A"); // 30th Anniversary Edition
add("P30A"); // 30th Anniversary Play Promos
add("P30M"); // 30th Anniversary Misc Promos
add("PEWK"); // Eternal Weekend
add("LTR"); // The Lord of the Rings: Tales of Middle-Earth
add("LTC"); // Tales of Middle-Earth Commander
add("CMM"); // Commander Masters
@ -577,6 +580,7 @@ public class ScryfallImageSupportCards {
add("PIO"); // Pioneer Masters
add("PW25"); // Wizards Play Network 2025
add("INR"); // Innistrad Remastered
add("PF25"); // MagicFest 2025
add("DFT"); // Aetherdrift
add("DRC"); // Aetherdrift Commander
add("TDM"); // Tarkir: Dragonstorm

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB