diff --git a/forge-game/src/main/java/forge/game/GameFormat.java b/forge-game/src/main/java/forge/game/GameFormat.java index d58b1833a60..48be6ad57fb 100644 --- a/forge-game/src/main/java/forge/game/GameFormat.java +++ b/forge-game/src/main/java/forge/game/GameFormat.java @@ -286,13 +286,27 @@ public class GameFormat implements Comparable { public static class Reader extends StorageReaderRecursiveFolderWithUserFolder { List naturallyOrdered = new ArrayList(); + boolean includeHistoric; + private List coreFormats = new ArrayList<>(); + { + coreFormats.add("Standard.txt"); + coreFormats.add("Modern.txt"); + coreFormats.add("Legacy.txt"); + coreFormats.add("Vintage.txt"); + coreFormats.add("Commander.txt"); + + } - public Reader(File forgeFormats, File customFormats) { + public Reader(File forgeFormats, File customFormats, boolean includeHistoric) { super(forgeFormats, customFormats, GameFormat.FN_GET_NAME); + this.includeHistoric=includeHistoric; } @Override protected GameFormat read(File file) { + if(!includeHistoric && !coreFormats.contains(file.getName())){ + return null; + } final Map> contents = FileSection.parseSections(FileUtil.readFile(file)); List sets = null; // default: all sets allowed List bannedCards = null; // default: nothing banned 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 21c5ba5e069..ce2281920f5 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 @@ -134,6 +134,9 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbLoadCardsLazily(), FPref.LOAD_CARD_SCRIPTS_LAZILY)); + lstControls.add(Pair.of(view.getCbLoadHistoricFormats(), FPref.LOAD_HISTORIC_FORMATS)); + + for(final Pair kv : lstControls) { kv.getKey().addItemListener(new ItemListener() { @Override 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 5c5052c4d7b..7fe08183eb2 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 @@ -65,6 +65,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbManaLostPrompt = new OptionsCheckBox("Prompt Mana Pool Emptying"); private final JCheckBox cbDevMode = new OptionsCheckBox("Developer Mode"); private final JCheckBox cbLoadCardsLazily = new OptionsCheckBox("Load Card Scripts Lazily"); + private final JCheckBox cbLoadHistoricFormats = new OptionsCheckBox("Load Historic Formats"); private final JCheckBox cbWorkshopSyntax = new OptionsCheckBox("Workshop Syntax Checker"); private final JCheckBox cbEnforceDeckLegality = new OptionsCheckBox("Deck Conformance"); private final JCheckBox cbImageFetcher = new OptionsCheckBox("Automatically Download Missing Card Art"); @@ -239,6 +240,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbLoadCardsLazily, titleConstraints); pnlPrefs.add(new NoteLabel("If turned on, Forge will load card scripts as they're needed instead of at start up. (Warning: Experimental)"), descriptionConstraints); + pnlPrefs.add(cbLoadHistoricFormats, titleConstraints); + pnlPrefs.add(new NoteLabel("If turned on, Forge will load all historic format definitions, this may take slightly longer to load at startup."), descriptionConstraints); + // Graphic Options pnlPrefs.add(new SectionLabel("Graphic Options"), sectionConstraints + ", gaptop 2%"); @@ -586,6 +590,11 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbLoadCardsLazily; } + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbLoadHistoricFormats() { + return cbLoadHistoricFormats; + } + public JCheckBox getCbWorkshopSyntax() { return cbWorkshopSyntax; } diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index de4d2714c4f..2523ad9a144 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -187,6 +187,9 @@ public class SettingsPage extends TabPage { lstSettings.addItem(new BooleanSetting(FPref.LOAD_CARD_SCRIPTS_LAZILY, "Load Card Scripts Lazily", "If turned on, Forge will load card scripts as they're needed instead of at start up. (Warning: Experimental)"), 3); + lstSettings.addItem(new BooleanSetting(FPref.LOAD_HISTORIC_FORMATS, + "Load Historic Formats", + "If turned on, Forge will load all historic format definitions, this may take slightly longer to load at startup."), 3); //Graphic Options lstSettings.addItem(new BooleanSetting(FPref.UI_OVERLAY_FOIL_EFFECT, diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index 27356dc2a82..93ebe0e59a1 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -165,7 +165,7 @@ public final class FModel { ForgePreferences.UPLOAD_DRAFT = ForgePreferences.NET_CONN; formats = new GameFormat.Collection(new GameFormat.Reader( new File(ForgeConstants.FORMATS_DATA_DIR), - new File(ForgeConstants.USER_FORMATS_DIR))); + new File(ForgeConstants.USER_FORMATS_DIR), preferences.getPrefBoolean(FPref.LOAD_HISTORIC_FORMATS))); magicDb.setStandardPredicate(formats.getStandard().getFilterRules()); magicDb.setModernPredicate(formats.getModern().getFilterRules()); diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index f4d5e2ee15d..a2d95ee682e 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -159,6 +159,7 @@ public class ForgePreferences extends PreferencesStore { DEV_LOG_ENTRY_TYPE (GameLogEntryType.DAMAGE.toString()), LOAD_CARD_SCRIPTS_LAZILY ("false"), + LOAD_HISTORIC_FORMATS ("false"), DECK_DEFAULT_CARD_LIMIT ("4"), DECKGEN_SINGLETONS ("false"),