Few tournament tweaks and fixes.

This commit is contained in:
Krazy
2014-06-03 00:25:28 +00:00
parent 2738b2f79b
commit 5b073a4f56
5 changed files with 74 additions and 10 deletions

View File

@@ -38,6 +38,7 @@ import forge.screens.deckeditor.views.VAllDecks;
import forge.screens.deckeditor.views.VCurrentDeck; import forge.screens.deckeditor.views.VCurrentDeck;
import forge.screens.deckeditor.views.VDeckgen; import forge.screens.deckeditor.views.VDeckgen;
import forge.screens.home.quest.CSubmenuQuestDraft; import forge.screens.home.quest.CSubmenuQuestDraft;
import forge.screens.home.quest.VSubmenuQuestDraft;
import forge.toolbox.FOptionPane; import forge.toolbox.FOptionPane;
import forge.toolbox.FSkin; import forge.toolbox.FSkin;
import forge.util.ItemPool; import forge.util.ItemPool;
@@ -293,6 +294,8 @@ public class CEditorQuestDraftingProcess extends ACEditorBase<PaperCard, DeckGro
FModel.getQuest().getAssets().addCredits(draft.getEntryFee()); FModel.getQuest().getAssets().addCredits(draft.getEntryFee());
FModel.getQuest().getAchievements().deleteDraft(draft); FModel.getQuest().getAchievements().deleteDraft(draft);
FModel.getQuest().save(); FModel.getQuest().save();
CSubmenuQuestDraft.SINGLETON_INSTANCE.update();
VSubmenuQuestDraft.SINGLETON_INSTANCE.populate();
} }
return leave; return leave;
} }

View File

@@ -392,6 +392,10 @@ public enum CSubmenuQuestDraft implements ICDoc {
VSubmenuQuestDraft view = VSubmenuQuestDraft.SINGLETON_INSTANCE; VSubmenuQuestDraft view = VSubmenuQuestDraft.SINGLETON_INSTANCE;
QuestAchievements achievements = FModel.getQuest().getAchievements(); QuestAchievements achievements = FModel.getQuest().getAchievements();
if (view.getMode().equals(Mode.EMPTY)) {
view.getPnlTournaments().removeAll();
}
view.getLblFirst().setText("1st Place: " + achievements.getWinsForPlace(1) + " time" + (achievements.getWinsForPlace(1) == 1 ? "" : "s")); view.getLblFirst().setText("1st Place: " + achievements.getWinsForPlace(1) + " time" + (achievements.getWinsForPlace(1) == 1 ? "" : "s"));
view.getLblSecond().setText("2nd Place: " + achievements.getWinsForPlace(2) + " time" + (achievements.getWinsForPlace(2) == 1 ? "" : "s")); view.getLblSecond().setText("2nd Place: " + achievements.getWinsForPlace(2) + " time" + (achievements.getWinsForPlace(2) == 1 ? "" : "s"));
view.getLblThird().setText("3rd Place: " + achievements.getWinsForPlace(3) + " time" + (achievements.getWinsForPlace(3) == 1 ? "" : "s")); view.getLblThird().setText("3rd Place: " + achievements.getWinsForPlace(3) + " time" + (achievements.getWinsForPlace(3) == 1 ? "" : "s"));

View File

@@ -73,6 +73,7 @@ public class QuestEventDraft {
private int[] aiIcons = new int[7]; private int[] aiIcons = new int[7];
private boolean started = false; private boolean started = false;
private int age = 0;
public QuestEventDraft(final String title) { public QuestEventDraft(final String title) {
this.title = title; this.title = title;
@@ -138,6 +139,18 @@ public class QuestEventDraft {
aiIcons = icons; aiIcons = icons;
} }
public int getAge() {
return age;
}
public void setAge(final int age) {
this.age = age;
}
public void addWin() {
age++;
}
public int getHumanLatestStanding() { public int getHumanLatestStanding() {
int humanIndex = 0; int humanIndex = 0;
for (int i = getStandings().length - 1; i >= 0; i--) { for (int i = getStandings().length - 1; i >= 0; i--) {

View File

@@ -22,8 +22,7 @@ public class QuestAchievements {
private QuestEventDraftContainer drafts = new QuestEventDraftContainer(); private QuestEventDraftContainer drafts = new QuestEventDraftContainer();
private int currentDraft = -1; private int currentDraft = -1;
private int draftTokensAvailable = 3; private int draftTokensAvailable = 1;
private int winCountAtEndOfDraft = 0;
private int win; private int win;
private int winstreakBest = 0; private int winstreakBest = 0;
@@ -47,13 +46,15 @@ public class QuestAchievements {
} }
public void deleteDraft(QuestEventDraft draft) { public void deleteDraft(QuestEventDraft draft) {
if (currentDraft == drafts.indexOf(draft)) {
currentDraft = -1;
}
drafts.remove(draft); drafts.remove(draft);
} }
public void endCurrentTournament(final int place) { public void endCurrentTournament(final int place) {
drafts.remove(drafts.get(currentDraft)); drafts.remove(drafts.get(currentDraft));
currentDraft = -1; currentDraft = -1;
winCountAtEndOfDraft = win;
addDraftFinish(place); addDraftFinish(place);
FModel.getQuest().save(); FModel.getQuest().save();
} }
@@ -66,14 +67,12 @@ public class QuestAchievements {
* Adds the win. * Adds the win.
*/ */
public void addWin() { // changes getRank() public void addWin() { // changes getRank()
this.win++; this.win++;
this.winstreakCurrent++; this.winstreakCurrent++;
//Every 5 wins, allow a tournament to be generated. for (QuestEventDraft draft : drafts) {
if ((win - winCountAtEndOfDraft) % 5 == 0) { draft.addWin();
if (draftTokensAvailable < 3) {
draftTokensAvailable++;
}
} }
if (this.winstreakCurrent > this.winstreakBest) { if (this.winstreakCurrent > this.winstreakBest) {
@@ -214,7 +213,43 @@ public class QuestAchievements {
if (drafts == null) { if (drafts == null) {
drafts = new QuestEventDraftContainer(); 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(); int draftsToGenerate = 3 - drafts.size();

View File

@@ -548,6 +548,10 @@ public class QuestDataIO {
writer.setValue("" + draft.isStarted()); writer.setValue("" + draft.isStarted());
writer.endNode(); writer.endNode();
writer.startNode("age");
writer.setValue("" + draft.getAge());
writer.endNode();
writer.endNode(); writer.endNode();
} }
@@ -567,6 +571,7 @@ public class QuestDataIO {
String draftName = null; String draftName = null;
String boosterConfiguration = null; String boosterConfiguration = null;
int entryFee = 1500; int entryFee = 1500;
int age = 0;
String block = null; String block = null;
String[] standings = new String[15]; String[] standings = new String[15];
String[] aiNames = new String[7]; String[] aiNames = new String[7];
@@ -617,6 +622,9 @@ public class QuestDataIO {
case "started": case "started":
started = Boolean.parseBoolean(reader.getValue()); started = Boolean.parseBoolean(reader.getValue());
break; break;
case "age":
age = Integer.parseInt(reader.getValue());
break;
} }
reader.moveUp(); reader.moveUp();
@@ -631,6 +639,7 @@ public class QuestDataIO {
draft.setAINames(aiNames); draft.setAINames(aiNames);
draft.setAIIcons(aiIcons); draft.setAIIcons(aiIcons);
draft.setStarted(started); draft.setStarted(started);
draft.setAge(age);
output.add(draft); output.add(draft);