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); } }