diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestPrefsScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestPrefsScreen.java index 48942f4f3f2..b9f76cb257d 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestPrefsScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestPrefsScreen.java @@ -62,10 +62,14 @@ public class ConquestPrefsScreen extends FScreen { scroller.add(new PrefsOption("Planechase Game (%)", CQPref.PERCENT_PLANECHASE, PrefsGroup.VARIANT_FREQUENCY)); scroller.add(new PrefsOption("Commander & Planechase Game (%)", CQPref.PERCENT_DOUBLE_VARIANT, PrefsGroup.VARIANT_FREQUENCY)); - scroller.add(new PrefsHeader("Booster Pack Ratios", FSkinImage.PACK, PrefsGroup.BOOSTER)); - scroller.add(new PrefsOption("Common", CQPref.BOOSTER_COMMONS, PrefsGroup.BOOSTER)); - scroller.add(new PrefsOption("Uncommon", CQPref.BOOSTER_UNCOMMONS, PrefsGroup.BOOSTER)); - scroller.add(new PrefsOption("Rare", CQPref.BOOSTER_RARES, PrefsGroup.BOOSTER)); + scroller.add(new PrefsHeader("Booster Packs", FSkinImage.PACK, PrefsGroup.BOOSTER)); + scroller.add(new PrefsOption("Commons", CQPref.BOOSTER_COMMONS, PrefsGroup.BOOSTER)); + scroller.add(new PrefsOption("Uncommons", CQPref.BOOSTER_UNCOMMONS, PrefsGroup.BOOSTER)); + scroller.add(new PrefsOption("Rares", CQPref.BOOSTER_RARES, PrefsGroup.BOOSTER)); + scroller.add(new PrefsOption("Common Reroll Duplicate (%)", CQPref.BOOSTER_COMMON_REROLL, PrefsGroup.BOOSTER)); + scroller.add(new PrefsOption("Uncommon Reroll Duplicate (%)", CQPref.BOOSTER_UNCOMMON_REROLL, PrefsGroup.BOOSTER)); + scroller.add(new PrefsOption("Rare Reroll Duplicate (%)", CQPref.BOOSTER_RARE_REROLL, PrefsGroup.BOOSTER)); + scroller.add(new PrefsOption("Mythic Reroll Duplicate (%)", CQPref.BOOSTER_MYTHIC_REROLL, PrefsGroup.BOOSTER)); scroller.add(new PrefsHeader("Actions", FSkinImage.ALPHASTRIKE, PrefsGroup.ACTIONS)); scroller.add(new PrefsOption("Defend - Bonus Life", CQPref.DEFEND_BONUS_LIFE, PrefsGroup.ACTIONS)); diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestController.java b/forge-gui/src/main/java/forge/planarconquest/ConquestController.java index c493c394fe6..3ad01e20bd6 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestController.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestController.java @@ -529,5 +529,93 @@ public class ConquestController { } private void awardBooster(final IWinLoseView view) { + Iterable cardPool = gameRunner.commander.getDeployedRegion().getCardPool().getAllCards(); + + int newCommonCount = 0; + int newUncommonCount = 0; + int newRareCount = 0; + int newMythicCount = 0; + List commons = new ArrayList(); + List uncommons = new ArrayList(); + List rares = new ArrayList(); + List mythics = new ArrayList(); + + for (PaperCard c : cardPool) { + switch (c.getRarity()) { + case Common: + commons.add(c); + break; + case Uncommon: + uncommons.add(c); + break; + case Rare: + rares.add(c); + break; + case MythicRare: + mythics.add(c); + break; + default: + break; + } + } + + ConquestPreferences prefs = FModel.getConquestPreferences(); + + int boostersPerMythic = prefs.getPrefInt(CQPref.BOOSTERS_PER_MYTHIC); + int count = prefs.getPrefInt(CQPref.BOOSTER_RARES); + for (int i = 0; i < count; i++) { + if (Aggregates.randomInt(1, boostersPerMythic) == 1) { + + } + else { + + } + } + + int uncommonCount = prefs.getPrefInt(CQPref.BOOSTER_UNCOMMONS); + + count = prefs.getPrefInt(CQPref.BOOSTER_COMMONS); + int commonReroll = prefs.getPrefInt(CQPref.BOOSTER_COMMON_REROLL); + int uncommonReroll = prefs.getPrefInt(CQPref.BOOSTER_COMMON_REROLL); + int rareReroll = prefs.getPrefInt(CQPref.BOOSTER_COMMON_REROLL); + int mythicReroll = prefs.getPrefInt(CQPref.BOOSTER_MYTHIC_REROLL); + + } + + private class BoosterPool { + private final int rerollChance; + private int newCount = 0; + private final List cards = new ArrayList(); + + private BoosterPool(int rerollChance0) { + rerollChance = rerollChance0; + } + + private boolean isEmpty() { + return cards.isEmpty(); + } + + private void add(PaperCard c) { + if (!model.getCollection().contains(c)) { + newCount++; + } + cards.add(c); + } + + private PaperCard rewardCard() { + PaperCard c; + while (true) { + int index = Aggregates.randomInt(0, cards.size() - 1); + c = cards.get(index); + + //break out if new, if no new remaining, or if reroll chance fails + if (newCount == 0 || !model.getCollection().contains(c) || + Aggregates.randomInt(1, 100) > rerollChance) { + break; + } + } + cards.remove(c); + return c; + } } } diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestPreferences.java b/forge-gui/src/main/java/forge/planarconquest/ConquestPreferences.java index bffc2cfba65..d22f9579dd1 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestPreferences.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestPreferences.java @@ -38,10 +38,14 @@ public class ConquestPreferences extends PreferencesStore 15) { + return "Booster packs must have maximum 15 cards."; + } + break; + case BOOSTER_COMMON_REROLL: + case BOOSTER_UNCOMMON_REROLL: + case BOOSTER_RARE_REROLL: + case BOOSTER_MYTHIC_REROLL: + if (val > 100) { + return "Booster reroll chance must be between 0% and 100%."; + } + break; case RECRUIT_BONUS_CARD_ODDS: case STUDY_BONUS_CARD_ODDS: - if (val > 50) { + if (val > 100) { return "Bonus card odds must be between 0% and 50%."; } break;