From 2049a3dce4cc071f59e1ecffee0ac0f6bb564c8c Mon Sep 17 00:00:00 2001 From: Valerio Maggio Date: Sat, 20 May 2023 13:59:29 +0100 Subject: [PATCH] New PauperArchetypeCardGen DeckType added and UI updated for desktop/mobile --- .../java/forge/deckchooser/FDeckChooser.java | 7 ++- .../main/java/forge/screens/home/VLobby.java | 1 + .../home/gauntlet/CSubmenuGauntletQuick.java | 1 + .../home/gauntlet/VSubmenuGauntletQuick.java | 6 +- .../src/forge/deck/FDeckChooser.java | 56 ++++++++++--------- .../screens/constructed/LobbyScreen.java | 1 + .../screens/gauntlet/NewGauntletScreen.java | 1 + .../src/main/java/forge/deck/DeckType.java | 6 +- .../java/forge/deck/RandomDeckGenerator.java | 2 + .../gamemodes/gauntlet/GauntletUtil.java | 3 + .../gamemodes/tournament/TournamentUtil.java | 3 + 11 files changed, 54 insertions(+), 33 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java b/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java index 0304ceab37a..73304a92585 100644 --- a/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java +++ b/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java @@ -659,7 +659,12 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { if(FModel.isdeckGenMatrixLoaded()) { updateMatrix(FModel.getFormats().get("Vintage")); } - break; + break; + case PAUPER_CARDGEN_DECK: + if(FModel.isdeckGenMatrixLoaded()) { + updateMatrix(FModel.getFormats().getPauper()); + } + break; case RANDOM_COMMANDER_DECK: updateRandomCommander(); break; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java index ec39ffbcacb..1d83ef8cfd2 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java @@ -230,6 +230,7 @@ public class VLobby implements ILobbyView { case MODERN_CARDGEN_DECK: case LEGACY_CARDGEN_DECK: case VINTAGE_CARDGEN_DECK: + case PAUPER_CARDGEN_DECK: case COLOR_DECK: case STANDARD_COLOR_DECK: case MODERN_COLOR_DECK: diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java index e6c7031140a..fa841d3857e 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java @@ -82,6 +82,7 @@ public enum CSubmenuGauntletQuick implements ICDoc { if (view.getBoxModernGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.MODERN_CARDGEN_DECK); } if (view.getBoxLegacyGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.LEGACY_CARDGEN_DECK); } if (view.getBoxVintageGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.VINTAGE_CARDGEN_DECK); } + if (view.getBoxPauperGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.PAUPER_CARDGEN_DECK); } if (view.getBoxModernColorDecks().isSelected()) { allowedDeckTypes.add(DeckType.MODERN_COLOR_DECK); } if (view.getBoxPauperColorDecks().isSelected()) { allowedDeckTypes.add(DeckType.PAUPER_COLOR_DECK); } if (view.getBoxThemeDecks().isSelected()) { allowedDeckTypes.add(DeckType.THEME_DECK); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java index 309f4250f9e..70b95413d45 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java @@ -64,6 +64,7 @@ public enum VSubmenuGauntletQuick implements IVSubmenu { 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 boxVintageCardgenDecks = new FCheckBox(DeckType.VINTAGE_CARDGEN_DECK.toString()); + private final JCheckBox boxPauperCardgenDecks = new FCheckBox(DeckType.PAUPER_CARDGEN_DECK.toString()); private final JCheckBox boxModernColorDecks = new FCheckBox(DeckType.MODERN_COLOR_DECK.toString()); private final JCheckBox boxPauperColorDecks = new FCheckBox(DeckType.PAUPER_COLOR_DECK.toString()); private final JCheckBox boxThemeDecks = new FCheckBox(DeckType.THEME_DECK.toString()); @@ -245,9 +246,8 @@ public enum VSubmenuGauntletQuick implements IVSubmenu { public JCheckBox getBoxLegacyGenDecks() { return boxLegacyCardgenDecks; } - public JCheckBox getBoxVintageGenDecks() { - return boxVintageCardgenDecks; - } + public JCheckBox getBoxVintageGenDecks() { return boxVintageCardgenDecks; } + public JCheckBox getBoxPauperGenDecks() { return boxPauperCardgenDecks; } /** @return {@link javax.swing.JCheckBox} */ public JCheckBox getBoxThemeDecks() { diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index 42982897bdb..3cbf7f096ab 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -9,6 +9,7 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import forge.game.GameFormat; import forge.util.MyRandom; import org.apache.commons.lang3.StringUtils; @@ -146,7 +147,7 @@ public class FDeckChooser extends FScreen { && selectedDeckType != DeckType.PIONEER_CARDGEN_DECK && selectedDeckType != DeckType.HISTORIC_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_CARDGEN_DECK && selectedDeckType != DeckType.LEGACY_CARDGEN_DECK && selectedDeckType != DeckType.VINTAGE_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_COLOR_DECK - && selectedDeckType != DeckType.PAUPER_COLOR_DECK + && selectedDeckType != DeckType.PAUPER_CARDGEN_DECK && selectedDeckType != DeckType.PAUPER_COLOR_DECK && selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK && selectedDeckType != DeckType.RANDOM_COMMANDER_DECK && selectedDeckType != DeckType.RANDOM_CARDGEN_COMMANDER_DECK) { FDeckViewer.show(getDeck(), false, DeckType.DRAFT_DECK.equals(selectedDeckType)); @@ -180,6 +181,9 @@ public class FDeckChooser extends FScreen { else if (selectedDeckType == DeckType.VINTAGE_CARDGEN_DECK){ DeckgenUtil.randomSelect(lstDecks); } + else if (selectedDeckType == DeckType.PAUPER_CARDGEN_DECK){ + DeckgenUtil.randomSelect(lstDecks); + } else { int size = 0; try { @@ -327,6 +331,7 @@ public class FDeckChooser extends FScreen { case HISTORIC_CARDGEN_DECK: case LEGACY_CARDGEN_DECK: case VINTAGE_CARDGEN_DECK: + case PAUPER_CARDGEN_DECK: case MODERN_COLOR_DECK: case THEME_DECK: case RANDOM_DECK: @@ -551,11 +556,12 @@ public class FDeckChooser extends FScreen { cmbDeckTypes.addItem(DeckType.THEME_DECK); if(FModel.isdeckGenMatrixLoaded()) { cmbDeckTypes.addItem(DeckType.STANDARD_CARDGEN_DECK); - cmbDeckTypes.addItem(DeckType.PIONEER_CARDGEN_DECK); - cmbDeckTypes.addItem(DeckType.HISTORIC_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.MODERN_CARDGEN_DECK); + cmbDeckTypes.addItem(DeckType.PAUPER_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.LEGACY_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.VINTAGE_CARDGEN_DECK); + cmbDeckTypes.addItem(DeckType.PIONEER_CARDGEN_DECK); + cmbDeckTypes.addItem(DeckType.HISTORIC_CARDGEN_DECK); } cmbDeckTypes.addItem(DeckType.NET_DECK); cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_STANDARD_DECK); @@ -942,50 +948,37 @@ public class FDeckChooser extends FScreen { break; case STANDARD_CARDGEN_DECK: maxSelections = 1; - pool= new ArrayList<>(); - if(FModel.isdeckGenMatrixLoaded()) { - pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().getStandard(), isAi); - } + pool = getCardGenDeckPool(FModel.getFormats().getStandard()); config = ItemManagerConfig.STRING_ONLY; break; case PIONEER_CARDGEN_DECK: maxSelections = 1; - pool= new ArrayList<>(); - if(FModel.isdeckGenMatrixLoaded()) { - pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().getPioneer(), isAi); - } + pool = getCardGenDeckPool(FModel.getFormats().getPioneer()); config = ItemManagerConfig.STRING_ONLY; break; case HISTORIC_CARDGEN_DECK: maxSelections = 1; - pool= new ArrayList<>(); - if(FModel.isdeckGenMatrixLoaded()) { - pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().getHistoric(), isAi); - } + pool = getCardGenDeckPool(FModel.getFormats().getHistoric()); config = ItemManagerConfig.STRING_ONLY; break; case MODERN_CARDGEN_DECK: maxSelections = 1; - pool= new ArrayList<>(); - if(FModel.isdeckGenMatrixLoaded()) { - pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().getModern(), isAi); - } + pool = getCardGenDeckPool(FModel.getFormats().getModern()); config = ItemManagerConfig.STRING_ONLY; break; case LEGACY_CARDGEN_DECK: maxSelections = 1; - pool= new ArrayList<>(); - if(FModel.isdeckGenMatrixLoaded()) { - pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().get("Legacy"), isAi); - } + pool = getCardGenDeckPool(FModel.getFormats().get("Legacy")); config = ItemManagerConfig.STRING_ONLY; break; case VINTAGE_CARDGEN_DECK: maxSelections = 1; - pool= new ArrayList<>(); - if(FModel.isdeckGenMatrixLoaded()) { - pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().get("Vintage"), isAi); - } + pool = getCardGenDeckPool(FModel.getFormats().get("Vintage")); + config = ItemManagerConfig.STRING_ONLY; + break; + case PAUPER_CARDGEN_DECK: + maxSelections = 1; + pool = getCardGenDeckPool(FModel.getFormats().getPauper()); config = ItemManagerConfig.STRING_ONLY; break; case MODERN_COLOR_DECK: @@ -1148,6 +1141,13 @@ public class FDeckChooser extends FScreen { } } + private Iterable getCardGenDeckPool(GameFormat format) { + Iterable pool = new ArrayList<>(); + if(FModel.isdeckGenMatrixLoaded()) + pool = ArchetypeDeckGenerator.getMatrixDecks(format, isAi); + return pool; + } + @Override protected void doLayout(float startY, float width, float height) { float x = PADDING; @@ -1430,6 +1430,7 @@ public class FDeckChooser extends FScreen { DeckType.MODERN_CARDGEN_DECK, DeckType.LEGACY_CARDGEN_DECK, DeckType.VINTAGE_CARDGEN_DECK, + DeckType.PAUPER_CARDGEN_DECK, DeckType.THEME_DECK, DeckType.NET_DECK, DeckType.NET_ARCHIVE_STANDARD_DECK, @@ -1448,6 +1449,7 @@ public class FDeckChooser extends FScreen { deckTypes.remove(DeckType.MODERN_CARDGEN_DECK); deckTypes.remove(DeckType.LEGACY_CARDGEN_DECK); deckTypes.remove(DeckType.VINTAGE_CARDGEN_DECK); + deckTypes.remove(DeckType.PAUPER_CARDGEN_DECK); } ListChooser chooser = new ListChooser<>( diff --git a/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java b/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java index ab870246d2e..58cc3c0008f 100644 --- a/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java +++ b/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java @@ -547,6 +547,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { case MODERN_CARDGEN_DECK: case LEGACY_CARDGEN_DECK: case VINTAGE_CARDGEN_DECK: + case PAUPER_CARDGEN_DECK: case COLOR_DECK: case STANDARD_COLOR_DECK: case MODERN_COLOR_DECK: diff --git a/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java b/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java index 4d482fcba7a..5d3f48a90af 100644 --- a/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java +++ b/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java @@ -128,6 +128,7 @@ public class NewGauntletScreen extends LaunchScreen { DeckType.MODERN_CARDGEN_DECK, DeckType.LEGACY_CARDGEN_DECK, DeckType.VINTAGE_CARDGEN_DECK, + DeckType.PAUPER_CARDGEN_DECK, DeckType.THEME_DECK), null, new Callback>() { @Override public void run(final List allowedDeckTypes) { diff --git a/forge-gui/src/main/java/forge/deck/DeckType.java b/forge-gui/src/main/java/forge/deck/DeckType.java index 13a843889d5..2f20910ea2d 100644 --- a/forge-gui/src/main/java/forge/deck/DeckType.java +++ b/forge-gui/src/main/java/forge/deck/DeckType.java @@ -26,6 +26,7 @@ public enum DeckType { MODERN_CARDGEN_DECK("lblRandomModernArchetypeDecks"), LEGACY_CARDGEN_DECK("lblRandomLegacyArchetypeDecks"), VINTAGE_CARDGEN_DECK("lblRandomVintageArchetypeDecks"), + PAUPER_CARDGEN_DECK("lblRandomPauperArchetypeDecks"), STANDARD_COLOR_DECK("lblRandomStandardColorDecks"), MODERN_COLOR_DECK("lblRandomModernColorDecks"), PAUPER_COLOR_DECK("lblRandomPauperColorDecks"), @@ -55,11 +56,12 @@ public enum DeckType { DeckType.MODERN_COLOR_DECK, DeckType.PAUPER_COLOR_DECK, DeckType.STANDARD_CARDGEN_DECK, - DeckType.PIONEER_CARDGEN_DECK, - DeckType.HISTORIC_CARDGEN_DECK, DeckType.MODERN_CARDGEN_DECK, + DeckType.PAUPER_CARDGEN_DECK, DeckType.LEGACY_CARDGEN_DECK, DeckType.VINTAGE_CARDGEN_DECK, + DeckType.PIONEER_CARDGEN_DECK, + DeckType.HISTORIC_CARDGEN_DECK, DeckType.THEME_DECK, DeckType.RANDOM_DECK, DeckType.NET_DECK, diff --git a/forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java b/forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java index 670d5a76f34..892e67089c2 100644 --- a/forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java +++ b/forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java @@ -116,6 +116,8 @@ public class RandomDeckGenerator extends DeckProxy implements Comparable