diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form
index 0138479d0b1..e6bf6d18f40 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form
+++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form
@@ -2183,7 +2183,7 @@
-
+
@@ -2224,7 +2224,7 @@
-
+
@@ -2283,7 +2283,6 @@
-
@@ -2318,15 +2317,48 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
@@ -2354,6 +2386,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
index a4598bd2796..aa9b7405784 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
@@ -4,10 +4,7 @@ import mage.client.MageFrame;
import mage.client.SessionHandler;
import mage.client.components.KeyBindButton;
import mage.client.themes.ThemeType;
-import mage.client.util.CardLanguage;
-import mage.client.util.ClientDefaultSettings;
-import mage.client.util.GUISizeHelper;
-import mage.client.util.ImageHelper;
+import mage.client.util.*;
import mage.client.util.audio.MusicPlayer;
import mage.client.util.gui.BufferedImageBuilder;
import mage.client.util.gui.GuiDisplayUtil;
@@ -37,7 +34,6 @@ import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
-import java.util.stream.Collectors;
import static mage.client.constants.Constants.AUTO_TARGET_NON_FEEL_BAD;
import static mage.constants.Constants.*;
@@ -89,8 +85,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
public static final String KEY_CARD_IMAGES_SAVE_TO_ZIP = "cardImagesSaveToZip";
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_IMAGE_MODE = "cardRenderingMode";
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";
@@ -763,6 +758,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
}
cbPreferredImageLanguage.setModel(new DefaultComboBoxModel<>(CardLanguage.toList()));
+ cbCardRenderImageFallback.setModel(new DefaultComboBoxModel<>(CardRenderMode.toList()));
}
private void createSizeSetting(Integer position, String key, Integer defaultValue, boolean useExample, String name, String hint) {
@@ -964,14 +960,14 @@ public class PreferencesDialog extends javax.swing.JDialog {
cbPreferredImageLanguage = new javax.swing.JComboBox<>();
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();
cbCardRenderShowReminderText = new javax.swing.JCheckBox();
cbCardRenderHideSetSymbol = new javax.swing.JCheckBox();
cbCardRenderShowAbilityTextOverlay = new javax.swing.JCheckBox();
+ labelRenderMode = new javax.swing.JLabel();
+ cbCardRenderImageFallback = new javax.swing.JComboBox<>();
tabPhases = new javax.swing.JPanel();
jLabelHeadLine = new javax.swing.JLabel();
jLabelYourTurn = new javax.swing.JLabel();
@@ -2281,7 +2277,6 @@ public class PreferencesDialog extends javax.swing.JDialog {
}
});
- cbPreferredImageLanguage.setMaximumRowCount(20);
cbPreferredImageLanguage.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
labelPreferredImageLanguage.setText("Default images language:");
@@ -2307,7 +2302,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
.add(labelPreferredImageLanguage)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(cbPreferredImageLanguage, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 153, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
- .add(0, 480, Short.MAX_VALUE)))
+ .add(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
panelCardImagesLayout.setVerticalGroup(
@@ -2327,29 +2322,59 @@ public class PreferencesDialog extends javax.swing.JDialog {
);
panelCardStyles.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Card styles (restart xmage to apply new settings)"));
- panelCardStyles.setLayout(new javax.swing.BoxLayout(panelCardStyles, javax.swing.BoxLayout.Y_AXIS));
-
- 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);
cbCardRenderIconsForPlayable.setText("Enable card icons for playable abilities (example: if you can activate card's ability then show a special icon in the corner)");
- panelCardStyles.add(cbCardRenderIconsForPlayable);
- panelCardStyles.add(jSeparator1);
cbCardRenderShowReminderText.setText("Show reminder text in rendered card textboxes");
- panelCardStyles.add(cbCardRenderShowReminderText);
cbCardRenderHideSetSymbol.setText("Hide set symbols on cards (more space on the type line for card types)");
- panelCardStyles.add(cbCardRenderHideSetSymbol);
cbCardRenderShowAbilityTextOverlay.setText("Show ability text as overlay in big card view");
- panelCardStyles.add(cbCardRenderShowAbilityTextOverlay);
+
+ labelRenderMode.setText("Render Mode:");
+ labelRenderMode.setToolTipText("Image - Renders card image with text overlay
MTGO - Renders card frame around card art
Forced M15 - Renders all cards in the modern frame
Forced Retro - Renders all cards in the retro frame");
+
+ cbCardRenderImageFallback.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+ cbCardRenderImageFallback.setToolTipText("Image - Renders card image with text overlay
MTGO - Renders card frame around card art
Forced M15 - Renders all cards in the MTGO style with the modern frame
Forced Retro - Renders all cards in the MTGO style with the retro frame");
+
+ org.jdesktop.layout.GroupLayout panelCardStylesLayout = new org.jdesktop.layout.GroupLayout(panelCardStyles);
+ panelCardStyles.setLayout(panelCardStylesLayout);
+ panelCardStylesLayout.setHorizontalGroup(
+ panelCardStylesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+ .add(cbCardRenderIconsForAbilities)
+ .add(cbCardRenderIconsForPlayable)
+ .add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 775, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+ .add(cbCardRenderShowReminderText)
+ .add(cbCardRenderHideSetSymbol)
+ .add(cbCardRenderShowAbilityTextOverlay)
+ .add(panelCardStylesLayout.createSequentialGroup()
+ .add(6, 6, 6)
+ .add(labelRenderMode)
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+ .add(cbCardRenderImageFallback, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 122, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+ );
+ panelCardStylesLayout.setVerticalGroup(
+ panelCardStylesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+ .add(panelCardStylesLayout.createSequentialGroup()
+ .add(0, 0, 0)
+ .add(panelCardStylesLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
+ .add(labelRenderMode)
+ .add(cbCardRenderImageFallback, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+ .add(0, 0, 0)
+ .add(cbCardRenderIconsForAbilities)
+ .add(0, 0, 0)
+ .add(cbCardRenderIconsForPlayable)
+ .add(0, 0, 0)
+ .add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+ .add(0, 0, 0)
+ .add(cbCardRenderShowReminderText)
+ .add(0, 0, 0)
+ .add(cbCardRenderHideSetSymbol)
+ .add(0, 0, 0)
+ .add(cbCardRenderShowAbilityTextOverlay))
+ );
org.jdesktop.layout.GroupLayout tabGuiImagesLayout = new org.jdesktop.layout.GroupLayout(tabGuiImages);
tabGuiImages.setLayout(tabGuiImagesLayout);
@@ -2369,7 +2394,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
.add(panelCardStyles, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(panelCardImages, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(306, Short.MAX_VALUE))
+ .addContainerGap(309, Short.MAX_VALUE))
);
tabsPanel.addTab("GUI Images", tabGuiImages);
@@ -3040,8 +3065,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
save(prefs, dialog.cbUseRandomBattleImage, KEY_BATTLEFIELD_IMAGE_RANDOM, "true", "false");
// 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.cbCardRenderImageFallback, KEY_CARD_RENDERING_IMAGE_MODE);
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");
@@ -3492,8 +3516,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
dialog.cbPreferredImageLanguage.setSelectedItem(MageFrame.getPreferences().get(KEY_CARD_IMAGES_PREF_LANGUAGE, CardLanguage.ENGLISH.getCode()));
// 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");
+ dialog.cbCardRenderImageFallback.setSelectedItem(MageFrame.getPreferences().get(KEY_CARD_RENDERING_IMAGE_MODE, CardRenderMode.MTGO.toString()));
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");
@@ -3817,15 +3840,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
}
public static int getRenderMode() {
- if (getCachedValue(PreferencesDialog.KEY_CARD_RENDERING_IMAGE_MODE, "false").equals("false")) {
- return 0; // mtgo
- } else {
- return 1; // image
- }
- }
-
- public static boolean getRenderRetroFrames() {
- return (getCachedValue(PreferencesDialog.KEY_CARD_RENDERING_ENABLE_RETRO_FRAMES, "true").endsWith("true"));
+ return CardRenderMode.fromString(getCachedValue(PreferencesDialog.KEY_CARD_RENDERING_IMAGE_MODE, CardRenderMode.MTGO.toString())).getId();
}
public static boolean getRenderIconsForAbilities() {
@@ -4055,8 +4070,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
private javax.swing.JCheckBox cbCardRenderHideSetSymbol;
private javax.swing.JCheckBox cbCardRenderIconsForAbilities;
private javax.swing.JCheckBox cbCardRenderIconsForPlayable;
- private javax.swing.JCheckBox cbCardRenderImageFallback;
- private javax.swing.JCheckBox cbCardRenderRetroFrames;
+ private javax.swing.JComboBox cbCardRenderImageFallback;
private javax.swing.JCheckBox cbCardRenderShowAbilityTextOverlay;
private javax.swing.JCheckBox cbCardRenderShowReminderText;
private javax.swing.JCheckBox cbConfirmEmptyManaPool;
@@ -4188,6 +4202,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
private javax.swing.JLabel labelNextTurn;
private javax.swing.JLabel labelPreferredImageLanguage;
private javax.swing.JLabel labelPriorEnd;
+ private javax.swing.JLabel labelRenderMode;
private javax.swing.JLabel labelSizeGroup1;
private javax.swing.JLabel labelSizeGroup2;
private javax.swing.JLabel labelSkipStep;
diff --git a/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.form b/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.form
index 1c5f6220a6d..febdc1c3d85 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.form
+++ b/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.form
@@ -116,11 +116,9 @@
-
-
-
-
+
+
diff --git a/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.java
index 51eaabe44bf..cdc5d658831 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/TestCardRenderDialog.java
@@ -16,7 +16,7 @@ import mage.client.cards.BigCard;
import mage.client.game.PlayAreaPanel;
import mage.client.game.PlayerPanelExt;
import mage.client.themes.ThemeType;
-import mage.client.util.ClientEventType;
+import mage.client.util.*;
import mage.client.util.Event;
import mage.client.util.GUISizeHelper;
import mage.client.util.Listener;
@@ -82,6 +82,7 @@ public class TestCardRenderDialog extends MageDialog {
getRootPane().setDefaultButton(buttonCancel);
// init render mode
+ this.comboRenderMode.setModel(new DefaultComboBoxModel<>(CardRenderMode.toList()));
this.comboRenderMode.setSelectedIndex(PreferencesDialog.getRenderMode());
// init themes list
@@ -431,6 +432,7 @@ public class TestCardRenderDialog extends MageDialog {
cardViews.add(createPermanentCard(game, playerYou.getId(), "RNA", "185", 0, 0, 0, true, false, null)); // Judith, the Scourge Diva
cardViews.add(createHandCard(game, playerYou.getId(), "DIS", "153")); // Odds // Ends (split card)
cardViews.add(createHandCard(game, playerYou.getId(), "ELD", "38")); // Animating Faerie (adventure card)
+ cardViews.add(createHandCard(game, playerYou.getId(), "LEA", "278")); // Bayou (retro frame)
cardViews.add(createFaceDownCard(game, playerOpponent.getId(), "ELD", "38", false, false, false)); // face down
cardViews.add(createFaceDownCard(game, playerOpponent.getId(), "ELD", "38", true, false, true)); // morphed
cardViews.add(createFaceDownCard(game, playerOpponent.getId(), "ELD", "38", false, true, false)); // manifested
@@ -635,7 +637,7 @@ public class TestCardRenderDialog extends MageDialog {
labelRenderMode.setText("Render mode:");
- comboRenderMode.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "MTGO", "Image" }));
+ comboRenderMode.setToolTipText("Image - Renders card image with text overlay
MTGO - Renders card frame around card art
Forced M15 - Renders all cards in the MTGO style with the modern frame
Forced Retro - Renders all cards in the MTGO style with the retro frame");
comboRenderMode.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
comboRenderModeItemStateChanged(evt);
diff --git a/Mage.Client/src/main/java/mage/client/util/CardRenderMode.java b/Mage.Client/src/main/java/mage/client/util/CardRenderMode.java
new file mode 100644
index 00000000000..fb63c780d1a
--- /dev/null
+++ b/Mage.Client/src/main/java/mage/client/util/CardRenderMode.java
@@ -0,0 +1,59 @@
+package mage.client.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public enum CardRenderMode {
+
+ MTGO("MTGO", 0),
+ IMAGE("Image", 1),
+ FORCED_M15("Forced M15", 2),
+ FORCED_RETRO("Forced Retro", 3);
+
+ private final String text;
+ private final int id;
+
+ CardRenderMode(String text, int id) {
+ this.text = text;
+ this.id = id;
+ }
+
+ @Override
+ public String toString() {
+ return text;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public static String[] toList() {
+ List list = new ArrayList<>();
+ for (CardRenderMode mode : CardRenderMode.values()) {
+ list.add(mode.toString());
+ }
+ return list.toArray(new String[0]);
+ }
+
+ public static CardRenderMode fromId(int id) {
+ for (CardRenderMode mode : CardRenderMode.values()) {
+ if (mode.getId() == id) {
+ return mode;
+ }
+ }
+ return MTGO;
+ }
+
+ public static CardRenderMode fromString(String text) {
+ for (CardRenderMode mode : CardRenderMode.values()) {
+ if (mode.text.equals(text)) {
+ return mode;
+ }
+ }
+ return MTGO;
+ }
+}
diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanelRenderModeMTGO.java b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanelRenderModeMTGO.java
index 75424c1b6ee..c0851b79b5e 100644
--- a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanelRenderModeMTGO.java
+++ b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanelRenderModeMTGO.java
@@ -50,6 +50,7 @@ public class CardPanelRenderModeMTGO extends CardPanel {
private CardRenderer cardRenderer;
private int updateArtImageStamp;
+ private final int cardRenderMode;
private static class ImageKey {
final BufferedImage artImage;
@@ -143,12 +144,13 @@ public class CardPanelRenderModeMTGO extends CardPanel {
}
public CardPanelRenderModeMTGO(CardView newGameCard, UUID gameId, final boolean loadImage, ActionCallback callback,
- final boolean foil, Dimension dimension, boolean needFullPermanentRender) {
+ final boolean foil, Dimension dimension, boolean needFullPermanentRender, int renderMode) {
// Call to super
super(newGameCard, gameId, loadImage, callback, foil, dimension, needFullPermanentRender);
// Renderer
- cardRenderer = cardRendererFactory.create(getGameCard());
+ cardRenderMode = renderMode;
+ cardRenderer = cardRendererFactory.create(getGameCard(), cardRenderMode);
// Draw the parts
initialDraw();
@@ -265,7 +267,7 @@ public class CardPanelRenderModeMTGO extends CardPanel {
// Update renderer
cardImage = null;
- cardRenderer = cardRendererFactory.create(getGameCard());
+ cardRenderer = cardRendererFactory.create(getGameCard(), cardRenderMode);
cardRenderer.setArtImage(artImage);
// Repaint
diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/CardRendererFactory.java b/Mage.Client/src/main/java/org/mage/card/arcane/CardRendererFactory.java
index 4be35b5e155..10f99aa662c 100644
--- a/Mage.Client/src/main/java/org/mage/card/arcane/CardRendererFactory.java
+++ b/Mage.Client/src/main/java/org/mage/card/arcane/CardRendererFactory.java
@@ -2,6 +2,7 @@ package org.mage.card.arcane;
import mage.cards.FrameStyle;
import mage.client.dialog.PreferencesDialog;
+import mage.client.util.CardRenderMode;
import mage.view.CardView;
/**
@@ -13,12 +14,27 @@ public class CardRendererFactory {
}
public CardRenderer create(CardView card) {
+ return create(card, -1);
+ }
+
+ public CardRenderer create(CardView card, int renderModeOverride) {
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()) {
+ } else if (shouldRenderRetro(card, renderModeOverride)) {
+ // TODO: implement split card renderer for retro cards
return new RetroCardRenderer(card);
} else {
return new ModernCardRenderer(card);
}
}
+
+ private static boolean shouldRenderRetro(CardView card, int renderModeOverride) {
+ int renderMode = PreferencesDialog.getRenderMode();
+ if (renderModeOverride != -1) {
+ renderMode = renderModeOverride;
+ }
+ boolean renderMTGO = (card.getFrameStyle().equals(FrameStyle.RETRO) || card.getFrameStyle().equals(FrameStyle.LEA_ORIGINAL_DUAL_LAND_ART_BASIC)) && renderMode == CardRenderMode.MTGO.ordinal();
+ boolean forcedRetro = renderMode == CardRenderMode.FORCED_RETRO.ordinal();
+ return renderMTGO || forcedRetro;
+ }
}
diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java
index c5fc47f5b51..e3288ff43c7 100644
--- a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java
+++ b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java
@@ -3,7 +3,7 @@ package org.mage.plugins.card;
import mage.cards.MageCard;
import mage.cards.MagePermanent;
import mage.cards.action.ActionCallback;
-import mage.client.util.GUISizeHelper;
+import mage.client.util.*;
import mage.interfaces.plugin.CardPlugin;
import mage.view.CardView;
import mage.view.CounterView;
@@ -35,6 +35,8 @@ import java.util.List;
import java.util.*;
import java.util.concurrent.TimeUnit;
+import static mage.client.util.CardRenderMode.*;
+
/**
* {@link CardPlugin} implementation.
*
@@ -102,16 +104,19 @@ public class CardPluginImpl implements CardPlugin {
* yet, so use old component based rendering for the split cards.
*/
private CardPanel makeCardPanel(CardView view, UUID gameId, boolean loadImage, ActionCallback callback,
- boolean isFoil, Dimension dimension, int renderMode, boolean needFullPermanentRender) {
- switch (renderMode) {
- case 0:
+ boolean isFoil, Dimension dimension, int renderModeId, boolean needFullPermanentRender) {
+ CardRenderMode cardRenderMode = CardRenderMode.fromId(renderModeId);
+ switch (cardRenderMode) {
+ case MTGO:
+ case FORCED_M15:
+ case FORCED_RETRO:
return new CardPanelRenderModeMTGO(view, gameId, loadImage, callback, isFoil, dimension,
- needFullPermanentRender);
- case 1:
+ needFullPermanentRender, renderModeId);
+ case IMAGE:
return new CardPanelRenderModeImage(view, gameId, loadImage, callback, isFoil, dimension,
needFullPermanentRender);
default:
- throw new IllegalStateException("Unknown render mode " + renderMode);
+ throw new IllegalStateException("Unknown render mode " + cardRenderMode);
}
}