From 13652e30acb69019d0a1ead78cee1cda0ca1ab18 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 3 Apr 2020 18:00:10 +0800 Subject: [PATCH] Add Elsa Serializer Option (Off by default) --- forge-gui-android/src/forge/app/Main.java | 5 +++-- .../forge/screens/home/settings/CSubmenuPreferences.java | 1 + .../forge/screens/home/settings/VSubmenuPreferences.java | 9 +++++++++ forge-gui-ios/src/forge/ios/Main.java | 6 +++++- forge-gui-mobile-dev/src/forge/app/Main.java | 6 +++++- .../src/forge/screens/settings/SettingsPage.java | 8 ++++++++ 6 files changed, 31 insertions(+), 4 deletions(-) diff --git a/forge-gui-android/src/forge/app/Main.java b/forge-gui-android/src/forge/app/Main.java index 93ecdcb997b..3d3fbb5135a 100644 --- a/forge-gui-android/src/forge/app/Main.java +++ b/forge-gui-android/src/forge/app/Main.java @@ -217,8 +217,9 @@ public class Main extends AndroidApplication { Main.this.setRequestedOrientation(Main.this.getResources().getConfiguration().orientation); } - - initialize(Forge.getApp(new AndroidClipboard(), adapter, assetsDir, false)); + ForgePreferences prefs = FModel.getPreferences(); + boolean propertyConfig = prefs != null && prefs.getPrefBoolean(ForgePreferences.FPref.UI_USE_ELSA); + initialize(Forge.getApp(new AndroidClipboard(), adapter, assetsDir, propertyConfig)); } /*@Override 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 10e52139fc1..ef151e4c515 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 @@ -115,6 +115,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbSingletons(), FPref.DECKGEN_SINGLETONS)); lstControls.add(Pair.of(view.getCbEnableAICheats(), FPref.UI_ENABLE_AI_CHEATS)); lstControls.add(Pair.of(view.getCbEnableUnknownCards(), FPref.UI_LOAD_UNKNOWN_CARDS)); + lstControls.add(Pair.of(view.getCbUseElsa(), FPref.UI_USE_ELSA)); lstControls.add(Pair.of(view.getCbImageFetcher(), FPref.UI_ENABLE_ONLINE_IMAGE_FETCHER)); lstControls.add(Pair.of(view.getCbDisplayFoil(), FPref.UI_OVERLAY_FOIL_EFFECT)); lstControls.add(Pair.of(view.getCbRandomFoil(), FPref.UI_RANDOM_FOIL)); 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 b94deaf4790..1f5b9e14dae 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 @@ -108,6 +108,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbRemindOnPriority = new OptionsCheckBox(localizer.getMessage("cbRemindOnPriority")); private final JCheckBox cbUseSentry = new OptionsCheckBox(localizer.getMessage("cbUseSentry")); private final JCheckBox cbEnableUnknownCards = new OptionsCheckBox("Enable Unknown Cards"); + private final JCheckBox cbUseElsa = new OptionsCheckBox("Use ELSA Serializer"); private final Map shortcutFields = new HashMap<>(); @@ -291,6 +292,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbEnableUnknownCards, titleConstraints); pnlPrefs.add(new NoteLabel("Enable Unknown Cards to be loaded to Unknown Set. (Requires restart)"), descriptionConstraints); + pnlPrefs.add(cbUseElsa, titleConstraints); + pnlPrefs.add(new NoteLabel("Use ELSA Serializer for Network (EXPERIMENTAL Option, Requires restart)"), descriptionConstraints); + // Graphic Options pnlPrefs.add(new SectionLabel(localizer.getMessage("GraphicOptions")), sectionConstraints + ", gaptop 2%"); @@ -589,6 +593,11 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbEnableUnknownCards; } + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbUseElsa() { + return cbUseElsa; + } + /** @return {@link javax.swing.JCheckBox} */ public JCheckBox getCbImageFetcher() { return cbImageFetcher; diff --git a/forge-gui-ios/src/forge/ios/Main.java b/forge-gui-ios/src/forge/ios/Main.java index 689e07d6fa7..74679a68360 100644 --- a/forge-gui-ios/src/forge/ios/Main.java +++ b/forge-gui-ios/src/forge/ios/Main.java @@ -8,6 +8,8 @@ import com.badlogic.gdx.backends.iosrobovm.IOSFiles; import forge.Forge; import forge.assets.AssetsDownloader; import forge.interfaces.IDeviceAdapter; +import forge.model.FModel; +import forge.properties.ForgePreferences; import forge.util.FileUtil; import org.robovm.apple.foundation.NSAutoreleasePool; import org.robovm.apple.uikit.UIApplication; @@ -29,7 +31,9 @@ public class Main extends IOSApplication.Delegate { final IOSApplicationConfiguration config = new IOSApplicationConfiguration(); config.useAccelerometer = false; config.useCompass = false; - final ApplicationListener app = Forge.getApp(new IOSClipboard(), new IOSAdapter(), assetsDir, false); + ForgePreferences prefs = FModel.getPreferences(); + boolean propertyConfig = prefs != null && prefs.getPrefBoolean(ForgePreferences.FPref.UI_USE_ELSA); + final ApplicationListener app = Forge.getApp(new IOSClipboard(), new IOSAdapter(), assetsDir, propertyConfig); final IOSApplication iosApp = new IOSApplication(app, config); return iosApp; } diff --git a/forge-gui-mobile-dev/src/forge/app/Main.java b/forge-gui-mobile-dev/src/forge/app/Main.java index 404ea118688..cbac0f09d8e 100644 --- a/forge-gui-mobile-dev/src/forge/app/Main.java +++ b/forge-gui-mobile-dev/src/forge/app/Main.java @@ -7,6 +7,8 @@ import com.badlogic.gdx.backends.lwjgl.LwjglClipboard; import forge.Forge; import forge.assets.AssetsDownloader; import forge.interfaces.IDeviceAdapter; +import forge.model.FModel; +import forge.properties.ForgePreferences; import forge.util.FileUtil; import forge.util.OperatingSystem; import forge.util.RestartUtil; @@ -92,8 +94,10 @@ public class Main { config.title = "Forge"; config.useHDPI = desktopMode; // enable HiDPI on Mac OS + ForgePreferences prefs = FModel.getPreferences(); + boolean propertyConfig = prefs != null && prefs.getPrefBoolean(ForgePreferences.FPref.UI_USE_ELSA); new LwjglApplication(Forge.getApp(new LwjglClipboard(), new DesktopAdapter(switchOrientationFile), - desktopMode ? desktopModeAssetsDir : assetsDir, false), config); + desktopMode ? desktopModeAssetsDir : assetsDir, propertyConfig), config); } private static class DesktopAdapter implements IDeviceAdapter { diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index f131389404d..3b2548cf2af 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -236,6 +236,14 @@ public class SettingsPage extends TabPage { "Enable Unknown Cards", "Enable Unknown Cards to be loaded to Unknown Set. (Requires restart)"), 3); + lstSettings.addItem(new BooleanSetting(FPref.UI_LOAD_UNKNOWN_CARDS, + "Enable Unknown Cards", + "Enable Unknown Cards to be loaded to Unknown Set. (Requires restart)"), + 3); + lstSettings.addItem(new BooleanSetting(FPref.UI_USE_ELSA, + "Use ELSA Serializer", + "Use ELSA Serializer for Network (EXPERIMENTAL Option, Requires restart)"), + 3); //Graphic Options lstSettings.addItem(new BooleanSetting(FPref.UI_ENABLE_ONLINE_IMAGE_FETCHER,