diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index 5957d90ef78..e2c3fc90fdf 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -104,6 +104,7 @@ public class Forge implements ApplicationListener { public static boolean isTabletDevice = false; public static String locale = "en-US"; public Assets assets; + private ForgePreferences forgePreferences; public static boolean hdbuttons = false; public static boolean hdstart = false; public static boolean isPortraitMode = false; @@ -145,6 +146,11 @@ public class Forge implements ApplicationListener { private Forge() { } + private ForgePreferences getForgePreferences() { + if (forgePreferences == null) + forgePreferences = new ForgePreferences(); + return forgePreferences; + } public static Localizer getLocalizer() { if (localizer == null) localizer = Localizer.getInstance(); @@ -179,33 +185,38 @@ public class Forge implements ApplicationListener { */ Gdx.input.setCatchKey(Keys.BACK, true); destroyThis = true; //Prevent back() - ForgePreferences prefs = new ForgePreferences(); if (Files.exists(Paths.get(ForgeConstants.DEFAULT_SKINS_DIR+ForgeConstants.ADV_TEXTURE_BG_FILE))) - selector = prefs.getPref(FPref.UI_SELECTOR_MODE); + selector = getForgePreferences().getPref(FPref.UI_SELECTOR_MODE); + boolean landscapeMode = GuiBase.isAndroid() ? !isPortraitMode : screenWidth > screenHeight; + //update landscape mode preference if it doesn't match what the app loaded as + if (getForgePreferences().getPrefBoolean(FPref.UI_LANDSCAPE_MODE) != landscapeMode) { + getForgePreferences().setPref(FPref.UI_LANDSCAPE_MODE, landscapeMode); + getForgePreferences().save(); + } String skinName; if (FileUtil.doesFileExist(ForgeConstants.MAIN_PREFS_FILE)) { - skinName = prefs.getPref(FPref.UI_SKIN); + skinName = getForgePreferences().getPref(FPref.UI_SKIN); } else { skinName = "default"; //use default skin if preferences file doesn't exist yet } FSkin.loadLight(skinName, splashScreen); - textureFiltering = prefs.getPrefBoolean(FPref.UI_LIBGDX_TEXTURE_FILTERING); - showFPS = prefs.getPrefBoolean(FPref.UI_SHOW_FPS); - autoAIDeckSelection = prefs.getPrefBoolean(FPref.UI_AUTO_AIDECK_SELECTION); - altPlayerLayout = prefs.getPrefBoolean(FPref.UI_ALT_PLAYERINFOLAYOUT); - altZoneTabs = prefs.getPrefBoolean(FPref.UI_ALT_PLAYERZONETABS); - animatedCardTapUntap = prefs.getPrefBoolean(FPref.UI_ANIMATED_CARD_TAPUNTAP); - enableUIMask = prefs.getPref(FPref.UI_ENABLE_BORDER_MASKING); - if (prefs.getPref(FPref.UI_ENABLE_BORDER_MASKING).equals("true")) //override old settings if not updated + textureFiltering = getForgePreferences().getPrefBoolean(FPref.UI_LIBGDX_TEXTURE_FILTERING); + showFPS = getForgePreferences().getPrefBoolean(FPref.UI_SHOW_FPS); + autoAIDeckSelection = getForgePreferences().getPrefBoolean(FPref.UI_AUTO_AIDECK_SELECTION); + altPlayerLayout = getForgePreferences().getPrefBoolean(FPref.UI_ALT_PLAYERINFOLAYOUT); + altZoneTabs = getForgePreferences().getPrefBoolean(FPref.UI_ALT_PLAYERZONETABS); + animatedCardTapUntap = getForgePreferences().getPrefBoolean(FPref.UI_ANIMATED_CARD_TAPUNTAP); + enableUIMask = getForgePreferences().getPref(FPref.UI_ENABLE_BORDER_MASKING); + if (getForgePreferences().getPref(FPref.UI_ENABLE_BORDER_MASKING).equals("true")) //override old settings if not updated enableUIMask = "Full"; - else if (prefs.getPref(FPref.UI_ENABLE_BORDER_MASKING).equals("false")) + else if (getForgePreferences().getPref(FPref.UI_ENABLE_BORDER_MASKING).equals("false")) enableUIMask = "Off"; - enablePreloadExtendedArt = prefs.getPrefBoolean(FPref.UI_ENABLE_PRELOAD_EXTENDED_ART); - locale = prefs.getPref(FPref.UI_LANGUAGE); - autoCache = prefs.getPrefBoolean(FPref.UI_AUTO_CACHE_SIZE); - disposeTextures = prefs.getPrefBoolean(FPref.UI_ENABLE_DISPOSE_TEXTURES); - CJK_Font = prefs.getPref(FPref.UI_CJK_FONT); + enablePreloadExtendedArt = getForgePreferences().getPrefBoolean(FPref.UI_ENABLE_PRELOAD_EXTENDED_ART); + locale = getForgePreferences().getPref(FPref.UI_LANGUAGE); + autoCache = getForgePreferences().getPrefBoolean(FPref.UI_AUTO_CACHE_SIZE); + disposeTextures = getForgePreferences().getPrefBoolean(FPref.UI_ENABLE_DISPOSE_TEXTURES); + CJK_Font = getForgePreferences().getPref(FPref.UI_CJK_FONT); if (autoCache) { //increase cacheSize for devices with RAM more than 5GB, default is 300. Some phones have more than 10GB RAM (Mi 10, OnePlus 8, S20, etc..) @@ -379,12 +390,6 @@ public class Forge implements ApplicationListener { //adjust height modifier adjustHeightModifier(getScreenWidth(), getScreenHeight()); - //update landscape mode preference if it doesn't match what the app loaded as - if (FModel.getPreferences().getPrefBoolean(FPref.UI_LANDSCAPE_MODE) != isLandscapeMode()) { - FModel.getPreferences().setPref(FPref.UI_LANDSCAPE_MODE, isLandscapeMode()); - FModel.getPreferences().save(); - } - FThreads.invokeInBackgroundThread(() -> FThreads.invokeInEdtLater(() -> { //load skin full FSkin.loadFull(splashScreen); diff --git a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java index 7a03cf71c22..166a9249ead 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java @@ -30,7 +30,6 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; * Scene to handle settings of the base forge and adventure mode */ public class SettingsScene extends UIScene { - static public ForgePreferences Preference; private final Table settingGroup; TextraButton backButton; //TextraButton newPlane; @@ -99,9 +98,6 @@ public class SettingsScene extends UIScene { super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json"); settingGroup = new Table(); - if (Preference == null) { - Preference = FModel.getPreferences(); - } //temporary disable custom world until it works correctly on each update /*selectSourcePlane = Controls.newComboBox(); newPlaneName = Controls.newTextField(""); @@ -131,10 +127,10 @@ public class SettingsScene extends UIScene { mode = "720p"; Graphics.setVideoMode(mode); - //update preference for classic mode if needed - if (Preference.getPref(ForgePreferences.FPref.UI_VIDEO_MODE).equals(mode)) { - Preference.setPref(ForgePreferences.FPref.UI_VIDEO_MODE, mode); - Preference.save(); + //update + if (!FModel.getPreferences().getPref(ForgePreferences.FPref.UI_VIDEO_MODE).equalsIgnoreCase(mode)) { + FModel.getPreferences().setPref(ForgePreferences.FPref.UI_VIDEO_MODE, mode); + FModel.getPreferences().save(); } return null; }); @@ -194,10 +190,8 @@ public class SettingsScene extends UIScene { Config.instance().getSettingData().fullScreen = value; Config.instance().saveSettings(); //update - if (Preference.getPrefBoolean(ForgePreferences.FPref.UI_FULLSCREEN_MODE) != value) { - Preference.setPref(ForgePreferences.FPref.UI_LANDSCAPE_MODE, value); - Preference.save(); - } + FModel.getPreferences().setPref(ForgePreferences.FPref.UI_FULLSCREEN_MODE, Config.instance().getSettingData().fullScreen); + FModel.getPreferences().save(); } }); } @@ -237,16 +231,18 @@ public class SettingsScene extends UIScene { addCheckBox(Forge.getLocalizer().getMessage("lblLandscapeMode"), ForgePreferences.FPref.UI_LANDSCAPE_MODE); addCheckBox(Forge.getLocalizer().getMessage("lblAnimatedCardTapUntap"), ForgePreferences.FPref.UI_ANIMATED_CARD_TAPUNTAP); if (!GuiBase.isAndroid()) { - final String[] item = {Preference.getPref(ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING)}; + final String[] item = {FModel.getPreferences().getPref(ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING)}; SelectBox borderMask = Controls.newComboBox(new String[]{"Off", "Crop", "Full", "Art"}, item[0], o -> { String mode = (String) o; if (mode == null) mode = "Crop"; item[0] = mode; - //update preference for classic mode if needed - Preference.setPref(ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING, mode); - Preference.save(); - Forge.enableUIMask = Preference.getPref(ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING); + //update + if (!FModel.getPreferences().getPref(ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING).equalsIgnoreCase(mode)) { + FModel.getPreferences().setPref(ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING, mode); + FModel.getPreferences().save(); + Forge.enableUIMask = FModel.getPreferences().getPref(ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING); + } ImageCache.clearGeneratedCards(); ImageCache.disposeTextures(); return null; @@ -277,12 +273,12 @@ public class SettingsScene extends UIScene { private void addInputField(String name, ForgePreferences.FPref pref) { TextField box = Controls.newTextField(""); - box.setText(Preference.getPref(pref)); + box.setText(FModel.getPreferences().getPref(pref)); box.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { - Preference.setPref(pref, ((TextField) actor).getText()); - Preference.save(); + FModel.getPreferences().setPref(pref, ((TextField) actor).getText()); + FModel.getPreferences().save(); } }); @@ -292,12 +288,12 @@ public class SettingsScene extends UIScene { private void addCheckBox(String name, ForgePreferences.FPref pref) { CheckBox box = Controls.newCheckBox(""); - box.setChecked(Preference.getPrefBoolean(pref)); + box.setChecked(FModel.getPreferences().getPrefBoolean(pref)); box.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { - Preference.setPref(pref, ((CheckBox) actor).isChecked()); - Preference.save(); + FModel.getPreferences().setPref(pref, ((CheckBox) actor).isChecked()); + FModel.getPreferences().save(); } }); @@ -307,12 +303,12 @@ public class SettingsScene extends UIScene { private void addSettingSlider(String name, ForgePreferences.FPref pref, int min, int max) { Slider slide = Controls.newSlider(min, max, 1, false); - slide.setValue(Preference.getPrefInt(pref)); + slide.setValue(FModel.getPreferences().getPrefInt(pref)); slide.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { - Preference.setPref(pref, String.valueOf((int) ((Slider) actor).getValue())); - Preference.save(); + FModel.getPreferences().setPref(pref, String.valueOf((int) ((Slider) actor).getValue())); + FModel.getPreferences().save(); if (ForgePreferences.FPref.UI_VOL_MUSIC.equals(pref)) SoundSystem.instance.refreshVolume(); }