From 55fb0ae130216f6bc0cae8366c34f3b376accdae Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Fri, 20 Sep 2019 11:16:36 -0700 Subject: [PATCH] Testing draft picks distribution --- .../gempukku/lotro/draft/HobbitDraftTest.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/draft/HobbitDraftTest.java diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/draft/HobbitDraftTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/draft/HobbitDraftTest.java new file mode 100644 index 000000000..ded9b928e --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/draft/HobbitDraftTest.java @@ -0,0 +1,81 @@ +package com.gempukku.lotro.draft; + +import com.gempukku.lotro.collection.CollectionsManager; +import com.gempukku.lotro.draft2.SoloDraft; +import com.gempukku.lotro.draft2.SoloDraftDefinitions; +import com.gempukku.lotro.game.CardSets; +import com.gempukku.lotro.game.DefaultAdventureLibrary; +import com.gempukku.lotro.game.LotroCardBlueprintLibrary; +import com.gempukku.lotro.game.formats.LotroFormatLibrary; +import com.gempukku.lotro.game.packs.SetDefinition; + +import java.io.File; +import java.util.Comparator; +import java.util.Map; +import java.util.TreeMap; + +public class HobbitDraftTest { + public static void main(String[] args) { + LotroCardBlueprintLibrary library = new LotroCardBlueprintLibrary(); + final String property = System.getProperty("user.dir"); + String projectRoot = new File(property).getAbsolutePath(); + + library.init(new File(projectRoot + "/gemp-lotr-async/src/main/web/cards"), new CardSets()); + + CollectionsManager collectionsManager = new CollectionsManager(null, null, null, library); + DefaultAdventureLibrary defaultAdventureLibrary = new DefaultAdventureLibrary(); + LotroFormatLibrary lotroFormatLibrary = new LotroFormatLibrary(defaultAdventureLibrary, library); + CardSets cardSets = new CardSets(); + + SoloDraftDefinitions soloDraftDefinitions = new SoloDraftDefinitions(collectionsManager, library, lotroFormatLibrary, cardSets.getSetDefinitions()); + + final SoloDraft hobbitDraft = soloDraftDefinitions.getSoloDraft("hobbit_draft"); + + long collectionType = 1568486003481L; + final int playerId = 1000; + + Map availableCards = new TreeMap<>( + new Comparator() { + @Override + public int compare(String o1, String o2) { + int set1 = Integer.parseInt(o1.substring(0, o1.indexOf('_'))); + int set2 = Integer.parseInt(o2.substring(0, o2.indexOf('_'))); + if (set1 != set2) + return set1 - set2; + int card1 = Integer.parseInt(o1.substring(o1.indexOf('_') + 1)); + int card2 = Integer.parseInt(o2.substring(o2.indexOf('_') + 1)); + return card1 - card2; + } + }); + + for (int i = 0; i < 1000; i++) { + // Take an example seed + long seed = getSeed(String.valueOf(collectionType + i), playerId); + + int stage = 0; + + while (hobbitDraft.hasNextStage(seed, stage)) { + final Iterable availableChoices = hobbitDraft.getAvailableChoices(seed, stage); + for (SoloDraft.DraftChoice availableChoice : availableChoices) { + final String blueprintId = availableChoice.getBlueprintId(); + availableCards.merge(blueprintId, 1, + (integer, integer2) -> integer + integer2); + } + + stage++; + } + } + + for (Map.Entry entry : availableCards.entrySet()) { + final String blueprint = entry.getKey(); + String set = blueprint.substring(0, blueprint.indexOf('_')); + final SetDefinition setDefinition = cardSets.getSetDefinitions().get(set); + final String cardRarity = setDefinition.getCardRarity(blueprint); + System.out.println(blueprint + " (" + cardRarity + "): " + entry.getValue()); + } + } + + private static long getSeed(String collectionType, int playerId) { + return collectionType.hashCode() + playerId * 8963; + } +}