diff --git a/.gitattributes b/.gitattributes
index 393144d9adb..6d3a1ebf60d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -20324,6 +20324,7 @@ forge-gui/src/main/java/forge/limited/DraftRankCache.java -text
forge-gui/src/main/java/forge/limited/GauntletMini.java -text
forge-gui/src/main/java/forge/limited/IBoosterDraft.java svneol=native#text/plain
forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java -text
+forge-gui/src/main/java/forge/limited/LimitedDeckEvaluator.java -text
forge-gui/src/main/java/forge/limited/LimitedPlayer.java -text
forge-gui/src/main/java/forge/limited/LimitedPlayerAI.java -text
forge-gui/src/main/java/forge/limited/LimitedPoolType.java -text
diff --git a/forge-gui/src/main/java/forge/limited/LimitedDeckEvaluator.java b/forge-gui/src/main/java/forge/limited/LimitedDeckEvaluator.java
new file mode 100644
index 00000000000..bedf6e15592
--- /dev/null
+++ b/forge-gui/src/main/java/forge/limited/LimitedDeckEvaluator.java
@@ -0,0 +1,73 @@
+/*
+ * Forge: Play Magic: the Gathering.
+ * Copyright (C) 2011 Forge Team
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package forge.limited;
+
+import forge.deck.Deck;
+import forge.item.PaperCard;
+
+import java.util.Map.Entry;
+
+/**
+ *
+ * @author agetian
+ */
+public class LimitedDeckEvaluator {
+
+ public static double getDeckDraftValue(Deck d) {
+ double value = 0;
+ double divider = 0;
+
+ if (d.getMain().isEmpty()) {
+ return 0;
+ }
+
+ double best = 1.0;
+
+ for (Entry kv : d.getMain()) {
+ PaperCard evalCard = kv.getKey();
+ int count = kv.getValue();
+ if (DraftRankCache.getRanking(evalCard.getName(), evalCard.getEdition()) != null) {
+ double add = DraftRankCache.getRanking(evalCard.getName(), evalCard.getEdition());
+ // System.out.println(evalCard.getName() + " is worth " + add);
+ value += add * count;
+ divider += count;
+ if (best > add) {
+ best = add;
+ }
+ }
+ }
+
+ if (divider == 0 || value == 0) {
+ return 0;
+ }
+
+ value /= divider;
+
+ return (20.0 / (best + (2 * value)));
+ }
+
+ public static class LimitedDeckComparer implements java.util.Comparator {
+ @Override
+ public int compare(Deck o1, Deck o2) {
+ double delta = getDeckDraftValue(o1) - getDeckDraftValue(o2);
+ if ( delta > 0 ) return 1;
+ if ( delta < 0 ) return -1;
+ return 0;
+ }
+ }
+}
diff --git a/forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java b/forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java
index 9d530ab4f10..5b1d0bc2717 100644
--- a/forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java
+++ b/forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java
@@ -136,7 +136,7 @@ public class SealedCardPoolGenerator {
}
// Rank the AI decks
- sealed.rankAiDecks(new SealedDeckComparer());
+ sealed.rankAiDecks(new LimitedDeckEvaluator.LimitedDeckComparer());
FModel.getDecks().getSealed().add(sealed);
return sealed;
@@ -465,47 +465,4 @@ public class SealedCardPoolGenerator {
public boolean isEmpty() {
return product.isEmpty();
}
-
- private static class SealedDeckComparer implements java.util.Comparator {
- public double getDraftValue(Deck d) {
- double value = 0;
- double divider = 0;
-
- if (d.getMain().isEmpty()) {
- return 0;
- }
-
- double best = 1.0;
-
- for (Entry kv : d.getMain()) {
- PaperCard evalCard = kv.getKey();
- int count = kv.getValue();
- if (DraftRankCache.getRanking(evalCard.getName(), evalCard.getEdition()) != null) {
- double add = DraftRankCache.getRanking(evalCard.getName(), evalCard.getEdition());
- // System.out.println(evalCard.getName() + " is worth " + add);
- value += add * count;
- divider += count;
- if (best > add) {
- best = add;
- }
- }
- }
-
- if (divider == 0 || value == 0) {
- return 0;
- }
-
- value /= divider;
-
- return (20.0 / (best + (2 * value)));
- }
-
- @Override
- public int compare(Deck o1, Deck o2) {
- double delta = getDraftValue(o1) - getDraftValue(o2);
- if ( delta > 0 ) return 1;
- if ( delta < 0 ) return -1;
- return 0;
- }
- }
}
diff --git a/forge-gui/src/main/java/forge/quest/QuestDraftUtils.java b/forge-gui/src/main/java/forge/quest/QuestDraftUtils.java
index 396f19b7a30..16b8237d944 100644
--- a/forge-gui/src/main/java/forge/quest/QuestDraftUtils.java
+++ b/forge-gui/src/main/java/forge/quest/QuestDraftUtils.java
@@ -14,6 +14,7 @@ import forge.game.player.RegisteredPlayer;
import forge.interfaces.IGuiGame;
import forge.item.PaperCard;
import forge.limited.DraftRankCache;
+import forge.limited.LimitedDeckEvaluator;
import forge.match.HostedMatch;
import forge.model.FModel;
import forge.player.GamePlayerUtil;
@@ -421,31 +422,7 @@ public class QuestDraftUtils {
DeckGroup draftDecks = FModel.getQuest().getDraftDecks().get(QuestEventDraft.DECK_NAME);
Deck d = sid.equals(QuestEventDraft.HUMAN) ? draftDecks.getHumanDeck() : draftDecks.getAiDecks().get(Integer.parseInt(sid) - 1);
- double value = 0;
- double divider = 0;
-
- double best = 1.0;
-
- for (Entry kv : d.getMain()) {
- PaperCard evalCard = kv.getKey();
- int count = kv.getValue();
- if (DraftRankCache.getRanking(evalCard.getName(), evalCard.getEdition()) != null) {
- double add = DraftRankCache.getRanking(evalCard.getName(), evalCard.getEdition());
- value += add * count;
- divider += count;
- if (best > add) {
- best = add;
- }
- }
- }
-
- if (divider == 0 || value == 0) {
- return 0;
- }
-
- value /= divider;
-
- return (20.0 / (best + (2 * value)));
+ return LimitedDeckEvaluator.getDeckDraftValue(d);
}
public static boolean injectRandomMatchOutcome(boolean simHumanMatches) {