Merge branch 'historicLDA' into 'master'

Historic Archetype Random Deck Generation

See merge request core-developers/forge!4488
This commit is contained in:
Michael Kamensky
2021-04-15 06:30:19 +00:00
18 changed files with 50 additions and 4 deletions

View File

@@ -484,6 +484,10 @@ public class GameFormat implements Comparable<GameFormat> {
return this.map.get("Pioneer"); return this.map.get("Pioneer");
} }
public GameFormat getHistoric() {
return this.map.get("Historic");
}
public GameFormat getModern() { public GameFormat getModern() {
return this.map.get("Modern"); return this.map.get("Modern");
} }

View File

@@ -613,6 +613,11 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
updateMatrix(FModel.getFormats().getPioneer()); updateMatrix(FModel.getFormats().getPioneer());
} }
break; break;
case HISTORIC_CARDGEN_DECK:
if(FModel.isdeckGenMatrixLoaded()) {
updateMatrix(FModel.getFormats().getHistoric());
}
break;
case MODERN_CARDGEN_DECK: case MODERN_CARDGEN_DECK:
if(FModel.isdeckGenMatrixLoaded()) { if(FModel.isdeckGenMatrixLoaded()) {
updateMatrix(FModel.getFormats().getModern()); updateMatrix(FModel.getFormats().getModern());

View File

@@ -246,6 +246,7 @@ public class VLobby implements ILobbyView {
switch (selectedDeckType){ switch (selectedDeckType){
case STANDARD_CARDGEN_DECK: case STANDARD_CARDGEN_DECK:
case PIONEER_CARDGEN_DECK: case PIONEER_CARDGEN_DECK:
case HISTORIC_CARDGEN_DECK:
case MODERN_CARDGEN_DECK: case MODERN_CARDGEN_DECK:
case LEGACY_CARDGEN_DECK: case LEGACY_CARDGEN_DECK:
case VINTAGE_CARDGEN_DECK: case VINTAGE_CARDGEN_DECK:

View File

@@ -73,6 +73,7 @@ public enum CSubmenuGauntletQuick implements ICDoc {
if (view.getBoxStandardColorDecks().isSelected()) { allowedDeckTypes.add(DeckType.STANDARD_COLOR_DECK); } if (view.getBoxStandardColorDecks().isSelected()) { allowedDeckTypes.add(DeckType.STANDARD_COLOR_DECK); }
if (view.getBoxStandardGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.STANDARD_CARDGEN_DECK); } if (view.getBoxStandardGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.STANDARD_CARDGEN_DECK); }
if (view.getBoxPioneerGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.PIONEER_CARDGEN_DECK); } if (view.getBoxPioneerGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.PIONEER_CARDGEN_DECK); }
if (view.getBoxHistoricGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.HISTORIC_CARDGEN_DECK); }
if (view.getBoxModernGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.MODERN_CARDGEN_DECK); } if (view.getBoxModernGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.MODERN_CARDGEN_DECK); }
if (view.getBoxLegacyGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.LEGACY_CARDGEN_DECK); } if (view.getBoxLegacyGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.LEGACY_CARDGEN_DECK); }
if (view.getBoxVintageGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.VINTAGE_CARDGEN_DECK); } if (view.getBoxVintageGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.VINTAGE_CARDGEN_DECK); }

View File

@@ -60,6 +60,7 @@ public enum VSubmenuGauntletQuick implements IVSubmenu<CSubmenuGauntletQuick> {
private final JCheckBox boxStandardColorDecks = new FCheckBox(DeckType.STANDARD_COLOR_DECK.toString()); private final JCheckBox boxStandardColorDecks = new FCheckBox(DeckType.STANDARD_COLOR_DECK.toString());
private final JCheckBox boxStandardCardgenDecks = new FCheckBox(DeckType.STANDARD_CARDGEN_DECK.toString()); private final JCheckBox boxStandardCardgenDecks = new FCheckBox(DeckType.STANDARD_CARDGEN_DECK.toString());
private final JCheckBox boxPioneerCardgenDecks = new FCheckBox(DeckType.PIONEER_CARDGEN_DECK.toString()); private final JCheckBox boxPioneerCardgenDecks = new FCheckBox(DeckType.PIONEER_CARDGEN_DECK.toString());
private final JCheckBox boxHistoricCardgenDecks = new FCheckBox(DeckType.HISTORIC_CARDGEN_DECK.toString());
private final JCheckBox boxModernCardgenDecks = new FCheckBox(DeckType.MODERN_CARDGEN_DECK.toString()); private final JCheckBox boxModernCardgenDecks = new FCheckBox(DeckType.MODERN_CARDGEN_DECK.toString());
private final JCheckBox boxLegacyCardgenDecks = new FCheckBox(DeckType.LEGACY_CARDGEN_DECK.toString()); private final JCheckBox boxLegacyCardgenDecks = new FCheckBox(DeckType.LEGACY_CARDGEN_DECK.toString());
private final JCheckBox boxVintageCardgenDecks = new FCheckBox(DeckType.VINTAGE_CARDGEN_DECK.toString()); private final JCheckBox boxVintageCardgenDecks = new FCheckBox(DeckType.VINTAGE_CARDGEN_DECK.toString());
@@ -231,6 +232,9 @@ public enum VSubmenuGauntletQuick implements IVSubmenu<CSubmenuGauntletQuick> {
public JCheckBox getBoxPioneerGenDecks() { public JCheckBox getBoxPioneerGenDecks() {
return boxPioneerCardgenDecks; return boxPioneerCardgenDecks;
} }
public JCheckBox getBoxHistoricGenDecks() {
return boxHistoricCardgenDecks;
}
public JCheckBox getBoxLegacyGenDecks() { public JCheckBox getBoxLegacyGenDecks() {
return boxLegacyCardgenDecks; return boxLegacyCardgenDecks;
} }

View File

@@ -156,7 +156,7 @@ public class FDeckChooser extends FScreen {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
if (selectedDeckType != DeckType.STANDARD_COLOR_DECK && selectedDeckType != DeckType.STANDARD_CARDGEN_DECK if (selectedDeckType != DeckType.STANDARD_COLOR_DECK && selectedDeckType != DeckType.STANDARD_CARDGEN_DECK
&& selectedDeckType != DeckType.PIONEER_CARDGEN_DECK && selectedDeckType != DeckType.PIONEER_CARDGEN_DECK && selectedDeckType != DeckType.HISTORIC_CARDGEN_DECK
&& selectedDeckType != DeckType.MODERN_CARDGEN_DECK && selectedDeckType != DeckType.LEGACY_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_CARDGEN_DECK && selectedDeckType != DeckType.LEGACY_CARDGEN_DECK
&& selectedDeckType != DeckType.VINTAGE_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_COLOR_DECK && && selectedDeckType != DeckType.VINTAGE_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_COLOR_DECK &&
selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK
@@ -183,6 +183,9 @@ public class FDeckChooser extends FScreen {
else if (selectedDeckType == DeckType.PIONEER_CARDGEN_DECK){ else if (selectedDeckType == DeckType.PIONEER_CARDGEN_DECK){
DeckgenUtil.randomSelect(lstDecks); DeckgenUtil.randomSelect(lstDecks);
} }
else if (selectedDeckType == DeckType.HISTORIC_CARDGEN_DECK){
DeckgenUtil.randomSelect(lstDecks);
}
else if (selectedDeckType == DeckType.MODERN_CARDGEN_DECK){ else if (selectedDeckType == DeckType.MODERN_CARDGEN_DECK){
DeckgenUtil.randomSelect(lstDecks); DeckgenUtil.randomSelect(lstDecks);
} }
@@ -320,6 +323,7 @@ public class FDeckChooser extends FScreen {
case RANDOM_COMMANDER_DECK: case RANDOM_COMMANDER_DECK:
case MODERN_CARDGEN_DECK: case MODERN_CARDGEN_DECK:
case PIONEER_CARDGEN_DECK: case PIONEER_CARDGEN_DECK:
case HISTORIC_CARDGEN_DECK:
case LEGACY_CARDGEN_DECK: case LEGACY_CARDGEN_DECK:
case VINTAGE_CARDGEN_DECK: case VINTAGE_CARDGEN_DECK:
case MODERN_COLOR_DECK: case MODERN_COLOR_DECK:
@@ -526,6 +530,7 @@ public class FDeckChooser extends FScreen {
if(FModel.isdeckGenMatrixLoaded()) { if(FModel.isdeckGenMatrixLoaded()) {
cmbDeckTypes.addItem(DeckType.STANDARD_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.STANDARD_CARDGEN_DECK);
cmbDeckTypes.addItem(DeckType.PIONEER_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.PIONEER_CARDGEN_DECK);
cmbDeckTypes.addItem(DeckType.HISTORIC_CARDGEN_DECK);
cmbDeckTypes.addItem(DeckType.MODERN_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.MODERN_CARDGEN_DECK);
cmbDeckTypes.addItem(DeckType.LEGACY_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.LEGACY_CARDGEN_DECK);
cmbDeckTypes.addItem(DeckType.VINTAGE_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.VINTAGE_CARDGEN_DECK);
@@ -931,6 +936,14 @@ public class FDeckChooser extends FScreen {
} }
config = ItemManagerConfig.STRING_ONLY; config = ItemManagerConfig.STRING_ONLY;
break; break;
case HISTORIC_CARDGEN_DECK:
maxSelections = 1;
pool= new ArrayList<>();
if(FModel.isdeckGenMatrixLoaded()) {
pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().getHistoric(), isAi);
}
config = ItemManagerConfig.STRING_ONLY;
break;
case MODERN_CARDGEN_DECK: case MODERN_CARDGEN_DECK:
maxSelections = 1; maxSelections = 1;
pool= new ArrayList<>(); pool= new ArrayList<>();
@@ -1377,6 +1390,7 @@ public class FDeckChooser extends FScreen {
DeckType.STANDARD_CARDGEN_DECK, DeckType.STANDARD_CARDGEN_DECK,
DeckType.MODERN_COLOR_DECK, DeckType.MODERN_COLOR_DECK,
DeckType.PIONEER_CARDGEN_DECK, DeckType.PIONEER_CARDGEN_DECK,
DeckType.HISTORIC_CARDGEN_DECK,
DeckType.MODERN_CARDGEN_DECK, DeckType.MODERN_CARDGEN_DECK,
DeckType.LEGACY_CARDGEN_DECK, DeckType.LEGACY_CARDGEN_DECK,
DeckType.VINTAGE_CARDGEN_DECK, DeckType.VINTAGE_CARDGEN_DECK,
@@ -1392,6 +1406,7 @@ public class FDeckChooser extends FScreen {
if (!FModel.isdeckGenMatrixLoaded()) { if (!FModel.isdeckGenMatrixLoaded()) {
deckTypes.remove(DeckType.STANDARD_CARDGEN_DECK); deckTypes.remove(DeckType.STANDARD_CARDGEN_DECK);
deckTypes.remove(DeckType.PIONEER_CARDGEN_DECK); deckTypes.remove(DeckType.PIONEER_CARDGEN_DECK);
deckTypes.remove(DeckType.HISTORIC_CARDGEN_DECK);
deckTypes.remove(DeckType.MODERN_CARDGEN_DECK); deckTypes.remove(DeckType.MODERN_CARDGEN_DECK);
deckTypes.remove(DeckType.LEGACY_CARDGEN_DECK); deckTypes.remove(DeckType.LEGACY_CARDGEN_DECK);
deckTypes.remove(DeckType.VINTAGE_CARDGEN_DECK); deckTypes.remove(DeckType.VINTAGE_CARDGEN_DECK);

View File

@@ -500,6 +500,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
switch (selectedDeckType){ switch (selectedDeckType){
case STANDARD_CARDGEN_DECK: case STANDARD_CARDGEN_DECK:
case PIONEER_CARDGEN_DECK: case PIONEER_CARDGEN_DECK:
case HISTORIC_CARDGEN_DECK:
case MODERN_CARDGEN_DECK: case MODERN_CARDGEN_DECK:
case LEGACY_CARDGEN_DECK: case LEGACY_CARDGEN_DECK:
case VINTAGE_CARDGEN_DECK: case VINTAGE_CARDGEN_DECK:

View File

@@ -89,6 +89,7 @@ public class NewGauntletScreen extends LaunchScreen {
DeckType.STANDARD_CARDGEN_DECK, DeckType.STANDARD_CARDGEN_DECK,
DeckType.MODERN_COLOR_DECK, DeckType.MODERN_COLOR_DECK,
DeckType.PIONEER_CARDGEN_DECK, DeckType.PIONEER_CARDGEN_DECK,
DeckType.HISTORIC_CARDGEN_DECK,
DeckType.MODERN_CARDGEN_DECK, DeckType.MODERN_CARDGEN_DECK,
DeckType.LEGACY_CARDGEN_DECK, DeckType.LEGACY_CARDGEN_DECK,
DeckType.VINTAGE_CARDGEN_DECK, DeckType.VINTAGE_CARDGEN_DECK,

Binary file not shown.

Binary file not shown.

View File

@@ -4,5 +4,5 @@ Type:Digital
Subtype:Arena Subtype:Arena
Effective:2019-11-21 Effective:2019-11-21
Order:142 Order:142
Sets:XLN, RIX, DOM, M19, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AKR, ZNR, KLR, KHM, STX, STA Sets:XLN, RIX, DOM, M19, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AKR, ZNR, KLR, KHM, HA4, STX, STA
Banned:Agent of Treachery; Channel; Counterspell; Dark Ritual; Demonic Tutor; Field of the Dead; Fires of Invention; Lightning Bolt; Oko, Thief of Crowns; Omnath, Locus of Creation; Natural Order; Nexus of Fate; Once Upon a Time; Swords to Plowshares; Teferi, Time Raveler; Veil of Summer; Uro, Titan of Nature's Wrath; Wilderness Reclamation; Winota, Joiner of Forces Banned:Agent of Treachery; Channel; Counterspell; Dark Ritual; Demonic Tutor; Field of the Dead; Fires of Invention; Lightning Bolt; Oko, Thief of Crowns; Omnath, Locus of Creation; Natural Order; Nexus of Fate; Once Upon a Time; Swords to Plowshares; Teferi, Time Raveler; Veil of Summer; Uro, Titan of Nature's Wrath; Wilderness Reclamation; Winota, Joiner of Forces

View File

@@ -580,6 +580,7 @@ lblQuestOpponentDecks=Quest Opponent Decks
lblRandomColorDecks=Random Color Decks lblRandomColorDecks=Random Color Decks
lblRandomStandardArchetypeDecks=Random Standard Archetype Decks lblRandomStandardArchetypeDecks=Random Standard Archetype Decks
lblRandomPioneerArchetypeDecks=Random Pioneer Archetype Decks lblRandomPioneerArchetypeDecks=Random Pioneer Archetype Decks
lblRandomHistoricArchetypeDecks=Random Historic Archetype Decks
lblRandomModernArchetypeDecks=Random Modern Archetype Decks lblRandomModernArchetypeDecks=Random Modern Archetype Decks
lblRandomLegacyArchetypeDecks=Random Legacy Archetype Decks lblRandomLegacyArchetypeDecks=Random Legacy Archetype Decks
lblRandomVintageArchetypeDecks=Random Vintage Archetype Decks lblRandomVintageArchetypeDecks=Random Vintage Archetype Decks

View File

@@ -27,6 +27,7 @@ public final class CardArchetypeLDAGenerator {
List<String> formatStrings = new ArrayList<>(); List<String> formatStrings = new ArrayList<>();
formatStrings.add(FModel.getFormats().getStandard().getName()); formatStrings.add(FModel.getFormats().getStandard().getName());
formatStrings.add(FModel.getFormats().getPioneer().getName()); formatStrings.add(FModel.getFormats().getPioneer().getName());
formatStrings.add(FModel.getFormats().getHistoric().getName());
formatStrings.add(FModel.getFormats().getModern().getName()); formatStrings.add(FModel.getFormats().getModern().getName());
formatStrings.add("Legacy"); formatStrings.add("Legacy");
formatStrings.add("Vintage"); formatStrings.add("Vintage");

View File

@@ -22,6 +22,7 @@ public enum DeckType {
COLOR_DECK("lblRandomColorDecks"), COLOR_DECK("lblRandomColorDecks"),
STANDARD_CARDGEN_DECK("lblRandomStandardArchetypeDecks"), STANDARD_CARDGEN_DECK("lblRandomStandardArchetypeDecks"),
PIONEER_CARDGEN_DECK("lblRandomPioneerArchetypeDecks"), PIONEER_CARDGEN_DECK("lblRandomPioneerArchetypeDecks"),
HISTORIC_CARDGEN_DECK("lblRandomHistoricArchetypeDecks"),
MODERN_CARDGEN_DECK("lblRandomModernArchetypeDecks"), MODERN_CARDGEN_DECK("lblRandomModernArchetypeDecks"),
LEGACY_CARDGEN_DECK("lblRandomLegacyArchetypeDecks"), LEGACY_CARDGEN_DECK("lblRandomLegacyArchetypeDecks"),
VINTAGE_CARDGEN_DECK("lblRandomVintageArchetypeDecks"), VINTAGE_CARDGEN_DECK("lblRandomVintageArchetypeDecks"),
@@ -50,6 +51,7 @@ public enum DeckType {
DeckType.COLOR_DECK, DeckType.COLOR_DECK,
DeckType.STANDARD_CARDGEN_DECK, DeckType.STANDARD_CARDGEN_DECK,
DeckType.PIONEER_CARDGEN_DECK, DeckType.PIONEER_CARDGEN_DECK,
DeckType.HISTORIC_CARDGEN_DECK,
DeckType.MODERN_CARDGEN_DECK, DeckType.MODERN_CARDGEN_DECK,
DeckType.LEGACY_CARDGEN_DECK, DeckType.LEGACY_CARDGEN_DECK,
DeckType.VINTAGE_CARDGEN_DECK, DeckType.VINTAGE_CARDGEN_DECK,

View File

@@ -106,6 +106,8 @@ public class RandomDeckGenerator extends DeckProxy implements Comparable<RandomD
return DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getStandard(),isAi); return DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getStandard(),isAi);
case PIONEER_CARDGEN_DECK: case PIONEER_CARDGEN_DECK:
return DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getPioneer(),isAi); return DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getPioneer(),isAi);
case HISTORIC_CARDGEN_DECK:
return DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getHistoric(),isAi);
case MODERN_CARDGEN_DECK: case MODERN_CARDGEN_DECK:
return DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getModern(),isAi); return DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getModern(),isAi);
case LEGACY_CARDGEN_DECK: case LEGACY_CARDGEN_DECK:

View File

@@ -42,6 +42,9 @@ public class GauntletUtil {
case PIONEER_CARDGEN_DECK: case PIONEER_CARDGEN_DECK:
deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getPioneer(),true); deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getPioneer(),true);
break; break;
case HISTORIC_CARDGEN_DECK:
deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getHistoric(),true);
break;
case MODERN_CARDGEN_DECK: case MODERN_CARDGEN_DECK:
deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getModern(),true); deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getModern(),true);
break; break;

View File

@@ -39,6 +39,9 @@ public class TournamentUtil {
case PIONEER_CARDGEN_DECK: case PIONEER_CARDGEN_DECK:
deck = DeckgenUtil.buildCardGenDeck(FModel.getFormats().getPioneer(),true); deck = DeckgenUtil.buildCardGenDeck(FModel.getFormats().getPioneer(),true);
break; break;
case HISTORIC_CARDGEN_DECK:
deck = DeckgenUtil.buildCardGenDeck(FModel.getFormats().getHistoric(),true);
break;
case MODERN_CARDGEN_DECK: case MODERN_CARDGEN_DECK:
deck = DeckgenUtil.buildCardGenDeck(FModel.getFormats().getModern(),true); deck = DeckgenUtil.buildCardGenDeck(FModel.getFormats().getModern(),true);
break; break;

View File

@@ -6,7 +6,7 @@ import com.google.common.base.Predicates;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
//import forge.GuiDesktop; import forge.GuiDesktop;
import forge.StaticData; import forge.StaticData;
import forge.card.CardRules; import forge.card.CardRules;
import forge.card.CardRulesPredicates; import forge.card.CardRulesPredicates;
@@ -15,6 +15,7 @@ import forge.deck.DeckFormat;
import forge.deck.io.Archetype; import forge.deck.io.Archetype;
import forge.deck.io.CardThemedLDAIO; import forge.deck.io.CardThemedLDAIO;
import forge.deck.io.DeckStorage; import forge.deck.io.DeckStorage;
import forge.gui.GuiBase;
import forge.lda.dataset.Dataset; import forge.lda.dataset.Dataset;
import forge.lda.lda.LDA; import forge.lda.lda.LDA;
import forge.game.GameFormat; import forge.game.GameFormat;
@@ -42,7 +43,7 @@ public final class LDAModelGenetrator {
public static final void main(String[] args){ public static final void main(String[] args){
//GuiBase.setInterface(new GuiDesktop()); GuiBase.setInterface(new GuiDesktop());
FModel.initialize(null, new Function<ForgePreferences, Void>() { FModel.initialize(null, new Function<ForgePreferences, Void>() {
@Override @Override
public Void apply(ForgePreferences preferences) { public Void apply(ForgePreferences preferences) {
@@ -57,6 +58,7 @@ public final class LDAModelGenetrator {
List<String> formatStrings = new ArrayList<>(); List<String> formatStrings = new ArrayList<>();
formatStrings.add(FModel.getFormats().getStandard().getName()); formatStrings.add(FModel.getFormats().getStandard().getName());
formatStrings.add(FModel.getFormats().getPioneer().getName()); formatStrings.add(FModel.getFormats().getPioneer().getName());
formatStrings.add(FModel.getFormats().getHistoric().getName());
formatStrings.add(FModel.getFormats().getModern().getName()); formatStrings.add(FModel.getFormats().getModern().getName());
formatStrings.add("Legacy"); formatStrings.add("Legacy");
formatStrings.add("Vintage"); formatStrings.add("Vintage");