diff --git a/forge-gui-desktop/src/main/java/forge/ImageLoader.java b/forge-gui-desktop/src/main/java/forge/ImageLoader.java index a72a0189aba..d910c0c2179 100644 --- a/forge-gui-desktop/src/main/java/forge/ImageLoader.java +++ b/forge-gui-desktop/src/main/java/forge/ImageLoader.java @@ -3,6 +3,9 @@ package forge; import com.google.common.cache.CacheLoader; import forge.error.BugReporter; +import forge.model.FModel; +import forge.properties.ForgePreferences; + import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -12,6 +15,9 @@ import java.io.IOException; final class ImageLoader extends CacheLoader { @Override public BufferedImage load(String key) { + if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES)) + return null; + File file = ImageKeys.getImageFile(key); if (file != null) { if (!file.exists()) { diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java index fac0c973db7..94076064dcf 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java @@ -131,6 +131,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbEnableNonLegalCards(), FPref.UI_LOAD_NONLEGAL_CARDS)); lstControls.add(Pair.of(view.getCbUseExperimentalNetworkStream(), FPref.UI_NETPLAY_COMPAT)); lstControls.add(Pair.of(view.getCbImageFetcher(), FPref.UI_ENABLE_ONLINE_IMAGE_FETCHER)); + lstControls.add(Pair.of(view.getCbDisableCardImages(), FPref.UI_DISABLE_CARD_IMAGES)); lstControls.add(Pair.of(view.getCbDisplayFoil(), FPref.UI_OVERLAY_FOIL_EFFECT)); lstControls.add(Pair.of(view.getCbRandomFoil(), FPref.UI_RANDOM_FOIL)); lstControls.add(Pair.of(view.getCbEnableSounds(), FPref.UI_ENABLE_SOUNDS)); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java index 18a05ea23fa..28dae081699 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java @@ -80,6 +80,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbSROptimize = new OptionsCheckBox(localizer.getMessage("cbSROptimize")); private final JCheckBox cbFilteredHands = new OptionsCheckBox(localizer.getMessage("cbFilteredHands")); private final JCheckBox cbImageFetcher = new OptionsCheckBox(localizer.getMessage("cbImageFetcher")); + private final JCheckBox cbDisableCardImages = new OptionsCheckBox(localizer.getMessage("lblDisableCardImages")); private final JCheckBox cbCloneImgSource = new OptionsCheckBox(localizer.getMessage("cbCloneImgSource")); private final JCheckBox cbScaleLarger = new OptionsCheckBox(localizer.getMessage("cbScaleLarger")); private final JCheckBox cbRenderBlackCardBorders = new OptionsCheckBox(localizer.getMessage("cbRenderBlackCardBorders")); @@ -313,6 +314,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbImageFetcher, titleConstraints); pnlPrefs.add(new NoteLabel(localizer.getMessage("nlImageFetcher")), descriptionConstraints); + pnlPrefs.add(cbDisableCardImages, titleConstraints); + pnlPrefs.add(new NoteLabel(localizer.getMessage("nlDisableCardImages")), descriptionConstraints); + pnlPrefs.add(cbDisplayFoil, titleConstraints); pnlPrefs.add(new NoteLabel(localizer.getMessage("nlDisplayFoil")), descriptionConstraints); @@ -617,6 +621,11 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbImageFetcher; } + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbDisableCardImages() { + return cbDisableCardImages; + } + /** @return {@link javax.swing.JCheckBox} */ public JCheckBox getCbDisplayFoil() { return cbDisplayFoil; diff --git a/forge-gui-mobile/src/forge/assets/ImageCache.java b/forge-gui-mobile/src/forge/assets/ImageCache.java index a530dea70e4..d127987c96f 100644 --- a/forge-gui-mobile/src/forge/assets/ImageCache.java +++ b/forge-gui-mobile/src/forge/assets/ImageCache.java @@ -38,6 +38,7 @@ import forge.item.InventoryItem; import forge.item.PaperCard; import forge.model.FModel; import forge.properties.ForgeConstants; +import forge.properties.ForgePreferences; import forge.util.ImageUtil; import forge.util.TextUtil; import org.apache.commons.lang3.StringUtils; @@ -230,12 +231,16 @@ public class ImageCache { return image; } public static void preloadCache(Iterable keys) { + if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES)) + return; for (String imageKey : keys){ if(getImage(imageKey, false) == null) System.err.println("could not load card image:"+imageKey); } } public static void preloadCache(Deck deck) { + if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES)) + return; if(deck == null||!Forge.enablePreloadExtendedArt) return; for (PaperCard p : deck.getAllCardsInASinglePool().toFlatList()) { diff --git a/forge-gui-mobile/src/forge/assets/ImageLoader.java b/forge-gui-mobile/src/forge/assets/ImageLoader.java index d471a67a6ae..78e72f75c63 100644 --- a/forge-gui-mobile/src/forge/assets/ImageLoader.java +++ b/forge-gui-mobile/src/forge/assets/ImageLoader.java @@ -14,7 +14,9 @@ import forge.FThreads; import forge.Forge; import forge.ImageKeys; +import forge.model.FModel; import forge.properties.ForgeConstants; +import forge.properties.ForgePreferences; import forge.util.FileUtil; import forge.util.TextUtil; import org.apache.commons.lang3.tuple.Pair; @@ -27,6 +29,9 @@ final class ImageLoader extends CacheLoader { Texture n; @Override public Texture load(String key) { + if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES)) + return null; + boolean extendedArt = isBorderless(key) && Forge.enableUIMask.equals("Full"); boolean textureFilter = Forge.isTextureFilteringEnabled(); File file = ImageKeys.getImageFile(key); diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index f9f705b151c..795994261c1 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -12,6 +12,7 @@ import forge.assets.FSkin; import forge.assets.FSkinColor; import forge.assets.FSkinFont; import forge.assets.FSkinImage; +import forge.assets.ImageCache; import forge.game.GameLogEntryType; import forge.model.FModel; import forge.properties.ForgeConstants; @@ -332,6 +333,16 @@ public class SettingsPage extends TabPage { 3); } //Graphic Options + lstSettings.addItem(new BooleanSetting(FPref.UI_DISABLE_CARD_IMAGES, + localizer.getMessage("lblDisableCardImages"), + localizer.getMessage("nlDisableCardImages")) { + @Override + public void select() { + super.select(); + ImageCache.disposeTexture(); + } + }, + 4); lstSettings.addItem(new BooleanSetting(FPref.UI_ENABLE_ONLINE_IMAGE_FETCHER, localizer.getMessage("cbImageFetcher"), localizer.getMessage("nlImageFetcher")), diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 18c10765136..bf7e9fdf366 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -1011,6 +1011,8 @@ lblEnableUnknownCards=Erlaube unbekannte Karten nlEnableUnknownCards=Erlaube unbekannte Karten von unbekannten Sets. (Erfordert Neustart) lblEnableNonLegalCards=Enable Non-Legal Cards nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) +lblDisableCardImages=Disable Card Images +nlDisableCardImages=When enabled, Forge will not display card images. lblExperimentalNetworkCompatibility=Experimentelle Netzwerkkompatibilität nlExperimentalNetworkCompatibility=Forge wechselt auf kompatiblen Netzwerk-Stream. (Im Zweifel bitte ausschalten) lblDisposeTextures=Texturen anordnen diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 78a7aeaa2a7..3cf57d32450 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -1011,6 +1011,8 @@ lblEnableUnknownCards=Enable Unknown Cards nlEnableUnknownCards=Enable Unknown Cards to be loaded to Unknown Set. (Requires restart) lblEnableNonLegalCards=Enable Non-Legal Cards nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) +lblDisableCardImages=Disable Card Images +nlDisableCardImages=When enabled, Forge will not display card images. lblExperimentalNetworkCompatibility=Experimental Network Compatibility nlExperimentalNetworkCompatibility=Forge switches to compatible network stream. (If unsure, turn OFF this option) lblDisposeTextures=Dispose Textures diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index 532f7def623..8ec518d7bf1 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -1011,6 +1011,8 @@ lblEnableUnknownCards=Habilitar cartas desconocidas nlEnableUnknownCards=Habilitar que las cartas desconocidas se carguen en el Unknown Set. (Requiere reinicio) lblEnableNonLegalCards=Enable Non-Legal Cards nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) +lblDisableCardImages=Disable Card Images +nlDisableCardImages=When enabled, Forge will not display card images. lblExperimentalNetworkCompatibility=Compatibilidad de red experimental nlExperimentalNetworkCompatibility=Forge cambia a un flujo de red compatible. (Si no estás seguro, deshabilita esta opción) lblDisposeTextures=Desechar texturas diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index c5bcfccdf23..72537c474be 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -1011,6 +1011,8 @@ lblEnableUnknownCards=Enable Unknown Cards nlEnableUnknownCards=Enable Unknown Cards to be loaded to Unknown Set. (Requires restart) lblEnableNonLegalCards=Enable Non-Legal Cards nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) +lblDisableCardImages=Disable Card Images +nlDisableCardImages=When enabled, Forge will not display card images. lblExperimentalNetworkCompatibility=Experimental Network Compatibility nlExperimentalNetworkCompatibility=Forge switches to compatible network stream. (If unsure, turn OFF this option) lblDisposeTextures=Dispose Textures diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 92e18258ec6..652b1d301db 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -1011,6 +1011,8 @@ lblEnableUnknownCards=未知のカードを有効にする nlEnableUnknownCards=未知のカードを未知のセットにまとめます。(再起動必須) lblEnableNonLegalCards=Enable Non-Legal Cards nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) +lblDisableCardImages=Disable Card Images +nlDisableCardImages=When enabled, Forge will not display card images. lblExperimentalNetworkCompatibility=実験的なネットワークコンパチビリティ nlExperimentalNetworkCompatibility=Forge がコンパチブルネットワークストリーミに切り替えます。 (分からない場合はオフにしてください) lblDisposeTextures=テキスチャー廃棄 diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index 6b255bb71dd..d83a9bf513d 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -1010,6 +1010,8 @@ lblEnableUnknownCards=启用未知卡牌 nlEnableUnknownCards=将未知卡牌加载到未知系列中。(需要重启) lblEnableNonLegalCards=Enable Non-Legal Cards nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) +lblDisableCardImages=Disable Card Images +nlDisableCardImages=When enabled, Forge will not display card images. lblExperimentalNetworkCompatibility=实验性网络兼容 nlExperimentalNetworkCompatibility=Forge将切换为兼容性的网络流。(如果不清楚此选项的作用,请关闭此选项) lblDisposeTextures=释放纹理 diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index 876fa705140..d420618110f 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -81,6 +81,7 @@ public class ForgePreferences extends PreferencesStore { UI_OVERLAY_CARD_ID ("true"), UI_OVERLAY_ABILITY_ICONS("true"), UI_ENABLE_ONLINE_IMAGE_FETCHER ("false"), + UI_DISABLE_CARD_IMAGES ("false"), UI_IMAGE_CACHE_MAXIMUM("400"), UI_OVERLAY_FOIL_EFFECT ("true"), UI_HIDE_REMINDER_TEXT ("false"), diff --git a/forge-gui/src/main/java/forge/util/ImageFetcher.java b/forge-gui/src/main/java/forge/util/ImageFetcher.java index 08fd46aef34..bea9dc4f290 100644 --- a/forge-gui/src/main/java/forge/util/ImageFetcher.java +++ b/forge-gui/src/main/java/forge/util/ImageFetcher.java @@ -43,6 +43,9 @@ public abstract class ImageFetcher { public void fetchImage(final String imageKey, final Callback callback) { FThreads.assertExecutedByEdt(true); + if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_DISABLE_CARD_IMAGES)) + return; + if (!FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_ENABLE_ONLINE_IMAGE_FETCHER)) return;