From a40b03e23370632e7bf61e9a49c1b3eea6621e97 Mon Sep 17 00:00:00 2001 From: Doublestrike Date: Sun, 18 Sep 2011 09:31:04 +0000 Subject: [PATCH] Null quest bug fixed. Quest count vs. wins bug fixed. --- .../quest/gui/main/QuestEventManager.java | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main/java/forge/quest/gui/main/QuestEventManager.java b/src/main/java/forge/quest/gui/main/QuestEventManager.java index c0bd80d0d69..25de5314494 100644 --- a/src/main/java/forge/quest/gui/main/QuestEventManager.java +++ b/src/main/java/forge/quest/gui/main/QuestEventManager.java @@ -360,32 +360,35 @@ public class QuestEventManager { forge.quest.data.QuestData questData = AllZone.getQuestData(); List questOpponents = new ArrayList(); - - // If no quests available right now, generate new IDs. - if (questData.getAvailableQuests() == null || questData.getAvailableQuests().size() == 0) { - // Assemble full list of currently available IDs. + + int maxQuests = questData.getWin() / 10; + if (maxQuests > 5) { + maxQuests = 5; + } + + // Generate IDs as needed. + if (questData.getAvailableQuests() == null || + questData.getAvailableQuests().size() < maxQuests) { + + List unlockedQuestIds = new ArrayList(); List availableQuestIds = new ArrayList(); + for(QuestQuest qq : allQuests) { if (qq.getWinsReqd() <= questData.getWin() && !questData.getCompletedQuests().contains(qq.getId())) { - availableQuestIds.add(qq.getId()); + unlockedQuestIds.add(qq.getId()); } - } - - // Filter that list as needed. - int maxQuests = questData.getWin() / 10; - if (maxQuests > 5) { - maxQuests = 5; - } - - Collections.shuffle(availableQuestIds); + } + Collections.shuffle(unlockedQuestIds); + for (int i = 0; i < maxQuests; i++) { - availableQuestIds.add(i); + availableQuestIds.add(unlockedQuestIds.get(i)); } + questData.setAvailableQuests(availableQuestIds); questData.saveData(); - } // + } // Finally, pull quest events from available IDs and return. for(int i : questData.getAvailableQuests()) {