From a118a3df93882f297f0f5a94052c82d93562627b Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 9 Jun 2023 21:16:25 +0800 Subject: [PATCH 1/2] filter out invalid option for BoosterDraft --- .../java/forge/screens/home/sanctioned/CSubmenuDraft.java | 4 +++- .../src/forge/screens/limited/NewDraftScreen.java | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java b/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java index fb1f164441c..08f7f5a6f05 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java @@ -4,7 +4,9 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; +import java.util.EnumSet; import java.util.List; +import java.util.stream.Collectors; import javax.swing.JButton; import javax.swing.JComboBox; @@ -208,7 +210,7 @@ public enum CSubmenuDraft implements ICDoc { private void setupDraft() { final Localizer localizer = Localizer.getInstance(); // Determine what kind of booster draft to run - final LimitedPoolType poolType = GuiChoose.oneOrNone(localizer.getMessage("lblChooseDraftFormat"), LimitedPoolType.values()); + final LimitedPoolType poolType = GuiChoose.oneOrNone(localizer.getMessage("lblChooseDraftFormat"), EnumSet.allOf(LimitedPoolType.class).stream().filter(limitedPoolType -> !LimitedPoolType.Prerelease.equals(limitedPoolType)).collect(Collectors.toSet())); if (poolType == null) { return; } final BoosterDraft draft = BoosterDraft.createDraft(poolType); diff --git a/forge-gui-mobile/src/forge/screens/limited/NewDraftScreen.java b/forge-gui-mobile/src/forge/screens/limited/NewDraftScreen.java index 922a6e18859..816929f075e 100644 --- a/forge-gui-mobile/src/forge/screens/limited/NewDraftScreen.java +++ b/forge-gui-mobile/src/forge/screens/limited/NewDraftScreen.java @@ -15,6 +15,9 @@ import forge.toolbox.FTextArea; import forge.util.ThreadUtil; import forge.util.Utils; +import java.util.EnumSet; +import java.util.stream.Collectors; + public class NewDraftScreen extends LaunchScreen { private static final float PADDING = Utils.scale(10); @@ -43,7 +46,7 @@ public class NewDraftScreen extends LaunchScreen { protected void startMatch() { //must run in game thread to prevent blocking UI thread ThreadUtil.invokeInGameThread(() -> { - final LimitedPoolType poolType = SGuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblChooseDraftFormat"), LimitedPoolType.values()); + final LimitedPoolType poolType = SGuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblChooseDraftFormat"), EnumSet.allOf(LimitedPoolType.class).stream().filter(limitedPoolType -> !LimitedPoolType.Prerelease.equals(limitedPoolType)).collect(Collectors.toSet())); if (poolType == null) { return; } final BoosterDraft draft = BoosterDraft.createDraft(poolType); From 13605d535097faeae23ceb61fde5ac47b35403a0 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 10 Jun 2023 09:00:55 +0800 Subject: [PATCH 2/2] update --- .../home/sanctioned/CSubmenuDraft.java | 4 +-- .../forge/screens/limited/NewDraftScreen.java | 5 +-- .../gamemodes/limited/LimitedPoolType.java | 33 +++++++++++++++++-- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java b/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java index 08f7f5a6f05..301d917ad4f 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuDraft.java @@ -4,9 +4,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; -import java.util.EnumSet; import java.util.List; -import java.util.stream.Collectors; import javax.swing.JButton; import javax.swing.JComboBox; @@ -210,7 +208,7 @@ public enum CSubmenuDraft implements ICDoc { private void setupDraft() { final Localizer localizer = Localizer.getInstance(); // Determine what kind of booster draft to run - final LimitedPoolType poolType = GuiChoose.oneOrNone(localizer.getMessage("lblChooseDraftFormat"), EnumSet.allOf(LimitedPoolType.class).stream().filter(limitedPoolType -> !LimitedPoolType.Prerelease.equals(limitedPoolType)).collect(Collectors.toSet())); + final LimitedPoolType poolType = GuiChoose.oneOrNone(localizer.getMessage("lblChooseDraftFormat"), LimitedPoolType.values(true)); if (poolType == null) { return; } final BoosterDraft draft = BoosterDraft.createDraft(poolType); diff --git a/forge-gui-mobile/src/forge/screens/limited/NewDraftScreen.java b/forge-gui-mobile/src/forge/screens/limited/NewDraftScreen.java index 816929f075e..1e4aa8b2346 100644 --- a/forge-gui-mobile/src/forge/screens/limited/NewDraftScreen.java +++ b/forge-gui-mobile/src/forge/screens/limited/NewDraftScreen.java @@ -15,9 +15,6 @@ import forge.toolbox.FTextArea; import forge.util.ThreadUtil; import forge.util.Utils; -import java.util.EnumSet; -import java.util.stream.Collectors; - public class NewDraftScreen extends LaunchScreen { private static final float PADDING = Utils.scale(10); @@ -46,7 +43,7 @@ public class NewDraftScreen extends LaunchScreen { protected void startMatch() { //must run in game thread to prevent blocking UI thread ThreadUtil.invokeInGameThread(() -> { - final LimitedPoolType poolType = SGuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblChooseDraftFormat"), EnumSet.allOf(LimitedPoolType.class).stream().filter(limitedPoolType -> !LimitedPoolType.Prerelease.equals(limitedPoolType)).collect(Collectors.toSet())); + final LimitedPoolType poolType = SGuiChoose.oneOrNone(Forge.getLocalizer().getMessage("lblChooseDraftFormat"), LimitedPoolType.values(true)); if (poolType == null) { return; } final BoosterDraft draft = BoosterDraft.createDraft(poolType); diff --git a/forge-gui/src/main/java/forge/gamemodes/limited/LimitedPoolType.java b/forge-gui/src/main/java/forge/gamemodes/limited/LimitedPoolType.java index cb16a79c64c..3c264e69fa2 100644 --- a/forge-gui/src/main/java/forge/gamemodes/limited/LimitedPoolType.java +++ b/forge-gui/src/main/java/forge/gamemodes/limited/LimitedPoolType.java @@ -5,16 +5,45 @@ import forge.util.Localizer; public enum LimitedPoolType { Full(Localizer.getInstance().getMessage("lblLimitedPoolFull")), Block(Localizer.getInstance().getMessage("lblLimitedBlock")), - Prerelease(Localizer.getInstance().getMessage("lblLimitedPrerelease")), + Prerelease(Localizer.getInstance().getMessage("lblLimitedPrerelease"), false), FantasyBlock(Localizer.getInstance().getMessage("lblLimitedFantasy")), Custom(Localizer.getInstance().getMessage("lblLimitedCustom")), Chaos(Localizer.getInstance().getMessage("lblLimitedChaos")); - + private final String displayName; + private final boolean draftable; + LimitedPoolType(String name) { + this(name, true); + } + + LimitedPoolType(String name, boolean draftable) { + this.draftable = draftable; displayName = name; } + public static LimitedPoolType[] values(boolean draftable) { + if (!draftable) { + return values(); + } + + int n = 0; + for (LimitedPoolType lpt : values()) { + if (lpt.draftable) { + n++; + } + } + LimitedPoolType[] draftableFormats = new LimitedPoolType[n]; + n = 0; + for (LimitedPoolType lpt : values()) { + if (lpt.draftable) { + draftableFormats[n] = lpt; + n++; + } + } + return draftableFormats; + } + @Override public String toString() { return displayName;