diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java index 45dcec5ef92..863ffb28655 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestPrefs.java @@ -329,12 +329,6 @@ public enum VSubmenuQuestPrefs implements IVSubmenu { pnlDifficulty.add(new FLabel.Builder().text("Wins for New Challenge").fontAlign(SwingConstants.RIGHT).build(), labelConstraints); pnlDifficulty.add(new PrefInput(QPref.WINS_NEW_CHALLENGE, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); - pnlDifficulty.add(new FLabel.Builder().text("Wins for New Draft").fontAlign(SwingConstants.RIGHT).build(), labelConstraints); - pnlDifficulty.add(new PrefInput(QPref.WINS_NEW_DRAFT, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); - - pnlDifficulty.add(new FLabel.Builder().text("Wins per Draft Rotation").fontAlign(SwingConstants.RIGHT).build(), labelConstraints); - pnlDifficulty.add(new PrefInput(QPref.WINS_ROTATE_DRAFT, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); - pnlDifficulty.add(new FLabel.Builder().text("Starting Snow Lands").fontAlign(SwingConstants.RIGHT).build(), labelConstraints); pnlDifficulty.add(new PrefInput(QPref.STARTING_SNOW_LANDS, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); @@ -455,6 +449,19 @@ public enum VSubmenuQuestPrefs implements IVSubmenu { pnlDraftTournaments.add(randomAIMatches, labelConstraints); pnlDraftTournaments.add(new PrefInput(QPref.SIMULATE_AI_VS_AI_RESULTS, QuestPreferencesErrType.DRAFT_TOURNAMENTS), fieldConstraints); + pnlDraftTournaments.add(new FLabel.Builder().text("Wins for New Draft").fontAlign(SwingConstants.RIGHT).build(), labelConstraints); + pnlDraftTournaments.add(new PrefInput(QPref.WINS_NEW_DRAFT, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); + + FLabel rotam = new FLabel.Builder().text("Wins per Draft Rotation").fontAlign(SwingConstants.RIGHT).build(); + rotam.setToolTipText("If a Draft is not played for this many match wins, it will be removed or replaced."); + pnlDraftTournaments.add(rotam, labelConstraints); + pnlDraftTournaments.add(new PrefInput(QPref.WINS_ROTATE_DRAFT, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); + + FLabel rottp = new FLabel.Builder().text("Rotation Type").fontAlign(SwingConstants.RIGHT).build(); + rottp.setToolTipText("If set to 0, old drafts disappear, if set to 1, they are replaced with another one using different sets."); + pnlDraftTournaments.add(rottp, labelConstraints); + pnlDraftTournaments.add(new PrefInput(QPref.DRAFT_ROTATION, QuestPreferencesErrType.DIFFICULTY), fieldConstraints + ", wrap"); + } /** */ diff --git a/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java b/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java index 4c5e4d1e24f..ca650629ddc 100644 --- a/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java +++ b/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java @@ -236,11 +236,16 @@ public class QuestAchievements { draftsToGenerate = 1; } + // Draft too old, needs to rotate Set toRemove = new HashSet<>(); for (QuestEventDraft draft : drafts) { if (draft.getAge() <= 0 && !(currentDraft != -1 && drafts.get(currentDraft) == draft)) { + // Remove and generate another toRemove.add(draft); + if (FModel.getQuestPreferences().getPrefInt(QPref.DRAFT_ROTATION) != 0) { + draftsToGenerate++; + } break; } } diff --git a/forge-gui/src/main/java/forge/quest/data/QuestPreferences.java b/forge-gui/src/main/java/forge/quest/data/QuestPreferences.java index 910fa9e2c4e..a2d86e4d5d7 100644 --- a/forge-gui/src/main/java/forge/quest/data/QuestPreferences.java +++ b/forge-gui/src/main/java/forge/quest/data/QuestPreferences.java @@ -176,7 +176,8 @@ public class QuestPreferences extends PreferencesStore i ITEM_LEVEL_RESTRICTION("1"), - SIMULATE_AI_VS_AI_RESULTS("0"); + SIMULATE_AI_VS_AI_RESULTS("0"), + DRAFT_ROTATION("0"); private final String strDefaultVal; @@ -279,7 +280,7 @@ public class QuestPreferences extends PreferencesStore i return "Bias value too large (maximum 100)."; } break; - + case DRAFT_ROTATION: case SPECIAL_BOOSTERS: case ITEM_LEVEL_RESTRICTION: if (val != 0 && val != 1) {