Add default cube rankings from cubecobra

This commit is contained in:
Adam Pantel
2021-04-06 12:28:16 -04:00
parent 3ad6045377
commit 489ccd9003
7 changed files with 3129 additions and 1400 deletions

View File

@@ -1,20 +1,18 @@
package forge.gamemodes.limited;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import forge.card.ColorSet;
import forge.card.DeckHints;
import forge.card.MagicColor;
import forge.item.PaperCard;
import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import forge.card.ColorSet;
import forge.card.DeckHints;
import forge.card.MagicColor;
import forge.item.PaperCard;
public class CardRanker {
private static final double SCORE_UNPICKABLE = -100.0;
@@ -110,7 +108,7 @@ public class CardRanker {
return cardScores;
}
private static double getRawScore(PaperCard card) {
public static double getRawScore(PaperCard card) {
Double rawScore;
if (MagicColor.Constant.BASIC_LANDS.contains(card.getName())) {
rawScore = SCORE_UNPICKABLE;
@@ -120,8 +118,14 @@ public class CardRanker {
if (customRankings != null) {
rkg = DraftRankCache.getCustomRanking(customRankings, card.getName());
if (rkg == null) {
// try the default rankings if custom rankings contain no entry
// try the default rankings if custom rankings contain no entry, but penalize missing cards
rkg = DraftRankCache.getRanking(card.getName(), card.getEdition());
if (rkg != null) {
rkg = rkg + 1;
}
}
if (rkg != null) {
rkg = rkg / 2;
}
} else {
rkg = DraftRankCache.getRanking(card.getName(), card.getEdition());

View File

@@ -113,7 +113,7 @@ public class CustomLimited extends DeckBase {
cd.landSetCode = data.get("LandSetCode");
cd.numPacks = data.getInt("NumPacks");
cd.singleton = data.getBoolean("Singleton");
cd.customRankingsFile = data.get("CustomRankings");
cd.customRankingsFile = data.get("CustomRankings", "rankings_cubecobra.txt");
final Deck deckCube = cubes.get(data.get("DeckFile"));
cd.cardPool = deckCube == null ? ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getUniqueCards(), PaperCard.class) : deckCube.getMain();

View File

@@ -89,7 +89,7 @@ public class ReadDraftRankings {
* the card's edition
* @return ranking
*/
public Double getRanking(String cardName, String edition) {
public Double getRanking(String cardName, String edition) {
Double rank = null;
if (draftRankings.containsKey(edition)) {

View File

@@ -21,6 +21,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Map.Entry;
import forge.gamemodes.limited.CardRanker;
import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Function;
@@ -38,7 +39,6 @@ import forge.card.mana.ManaCost;
import forge.deck.DeckProxy;
import forge.deck.io.DeckPreferences;
import forge.game.GameFormat;
import forge.gamemodes.limited.DraftRankCache;
import forge.gui.card.CardPreferences;
import forge.item.IPaperCard;
import forge.item.InventoryItem;
@@ -551,15 +551,13 @@ public enum ColumnDef {
}
private static Double toRanking(final InventoryItem i, boolean truncate) {
if (i instanceof IPaperCard){
IPaperCard cp = (IPaperCard) i;
Double ranking = DraftRankCache.getRanking(cp.getName(), cp.getEdition());
if (ranking != null) {
if (truncate) {
return new BigDecimal(ranking).setScale(4, RoundingMode.HALF_UP).doubleValue();
}
return ranking;
if (i instanceof PaperCard){
PaperCard cp = (PaperCard) i;
double ranking = CardRanker.getRawScore(cp);
if (truncate) {
return new BigDecimal(ranking).setScale(4, RoundingMode.HALF_UP).doubleValue();
}
return ranking;
}
return 500D;
}