From 5b073a4f56e791f351edcedf093e486a74da08a2 Mon Sep 17 00:00:00 2001 From: Krazy Date: Tue, 3 Jun 2014 00:25:28 +0000 Subject: [PATCH] Few tournament tweaks and fixes. --- .../CEditorQuestDraftingProcess.java | 3 + .../home/quest/CSubmenuQuestDraft.java | 4 ++ .../java/forge/quest/QuestEventDraft.java | 13 +++++ .../forge/quest/data/QuestAchievements.java | 55 +++++++++++++++---- .../main/java/forge/quest/io/QuestDataIO.java | 9 +++ 5 files changed, 74 insertions(+), 10 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestDraftingProcess.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestDraftingProcess.java index c3016f1bc19..2963078c942 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestDraftingProcess.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestDraftingProcess.java @@ -38,6 +38,7 @@ import forge.screens.deckeditor.views.VAllDecks; import forge.screens.deckeditor.views.VCurrentDeck; import forge.screens.deckeditor.views.VDeckgen; import forge.screens.home.quest.CSubmenuQuestDraft; +import forge.screens.home.quest.VSubmenuQuestDraft; import forge.toolbox.FOptionPane; import forge.toolbox.FSkin; import forge.util.ItemPool; @@ -293,6 +294,8 @@ public class CEditorQuestDraftingProcess extends ACEditorBase= 0; i--) { 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 380edb97067..316d9ed3229 100644 --- a/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java +++ b/forge-gui/src/main/java/forge/quest/data/QuestAchievements.java @@ -22,8 +22,7 @@ public class QuestAchievements { private QuestEventDraftContainer drafts = new QuestEventDraftContainer(); private int currentDraft = -1; - private int draftTokensAvailable = 3; - private int winCountAtEndOfDraft = 0; + private int draftTokensAvailable = 1; private int win; private int winstreakBest = 0; @@ -47,13 +46,15 @@ public class QuestAchievements { } public void deleteDraft(QuestEventDraft draft) { + if (currentDraft == drafts.indexOf(draft)) { + currentDraft = -1; + } drafts.remove(draft); } public void endCurrentTournament(final int place) { drafts.remove(drafts.get(currentDraft)); currentDraft = -1; - winCountAtEndOfDraft = win; addDraftFinish(place); FModel.getQuest().save(); } @@ -66,16 +67,14 @@ public class QuestAchievements { * Adds the win. */ public void addWin() { // changes getRank() + this.win++; this.winstreakCurrent++; - //Every 5 wins, allow a tournament to be generated. - if ((win - winCountAtEndOfDraft) % 5 == 0) { - if (draftTokensAvailable < 3) { - draftTokensAvailable++; - } + for (QuestEventDraft draft : drafts) { + draft.addWin(); } - + if (this.winstreakCurrent > this.winstreakBest) { this.winstreakBest = this.winstreakCurrent; } @@ -214,7 +213,43 @@ public class QuestAchievements { if (drafts == null) { drafts = new QuestEventDraftContainer(); - draftTokensAvailable = 3; + draftTokensAvailable = 1; + } + + QuestEventDraft toRemove = null; + for (QuestEventDraft draft : drafts) { //Pick the oldest draft first + if (draft.getAge() >= 5 && currentDraft == -1 && drafts.size() == 3) { + toRemove = draft; + break; + } + } + + if (toRemove != null) { + drafts.remove(toRemove); + draftTokensAvailable++; + for (QuestEventDraft draft : drafts) { + draft.setAge(draft.getAge() - 5); + } + } else { + + if (drafts.size() < 3) { + + int oldest = -100; + for (QuestEventDraft draft : drafts) { + if (draft.getAge() > oldest) { + oldest = draft.getAge(); + } + } + + if (oldest >= 5) { + draftTokensAvailable++; + for (QuestEventDraft draft : drafts) { + draft.setAge(draft.getAge() - 5); + } + } + + } + } int draftsToGenerate = 3 - drafts.size(); diff --git a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java index c17df10f12a..949bff998d0 100644 --- a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java +++ b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java @@ -548,6 +548,10 @@ public class QuestDataIO { writer.setValue("" + draft.isStarted()); writer.endNode(); + writer.startNode("age"); + writer.setValue("" + draft.getAge()); + writer.endNode(); + writer.endNode(); } @@ -567,6 +571,7 @@ public class QuestDataIO { String draftName = null; String boosterConfiguration = null; int entryFee = 1500; + int age = 0; String block = null; String[] standings = new String[15]; String[] aiNames = new String[7]; @@ -617,6 +622,9 @@ public class QuestDataIO { case "started": started = Boolean.parseBoolean(reader.getValue()); break; + case "age": + age = Integer.parseInt(reader.getValue()); + break; } reader.moveUp(); @@ -631,6 +639,7 @@ public class QuestDataIO { draft.setAINames(aiNames); draft.setAIIcons(aiIcons); draft.setStarted(started); + draft.setAge(age); output.add(draft);