diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml index 3ab9441ac86..82d32a1262e 100644 --- a/forge-gui-android/pom.xml +++ b/forge-gui-android/pom.xml @@ -45,6 +45,7 @@ ${project.basedir}/proguard.cfg + true @@ -107,11 +108,11 @@ gdx 0.9.9 - + com.badlogicgames.gdx gdx-freetype-platform @@ -123,11 +124,11 @@ 1.1.3.1 provided - + \ No newline at end of file diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java b/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java index 07d56028544..8788dc0a415 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/QuestWinLose.java @@ -137,6 +137,7 @@ public class QuestWinLose extends ControlWinLose { qc.getCards().loseCards(anteResult.lostCards); this.anteReport(anteResult.wonCards, anteResult.lostCards, questPlayer.equals(outcome.getWinningPlayer())); } + System.err.println(outcome.getWinningPlayer() + ", " + outcome.getLastTurnNumber()); } if (!lastGame.getMatch().isMatchOver()) { @@ -173,6 +174,8 @@ public class QuestWinLose extends ControlWinLose { this.awardRandomRare("You've won a random rare for winning against a very hard deck."); } } + + this.awardWinStreakBonus(); // Random rare given at 50% chance (65% with luck upgrade) if (this.getLuckyCoinResult()) { @@ -486,6 +489,61 @@ public class QuestWinLose extends ControlWinLose { this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); } } + + /** + *

+ * awardWinStreakBonus. + *

+ * Generates and displays a reward for maintaining a win streak. + * + */ + private void awardWinStreakBonus() { + + int currentStreak = qData.getAchievements().getWinStreakCurrent() + 1; + + final List cardsWon = new ArrayList<>(); + String typeWon = ""; + + switch (currentStreak) { + case 3: + cardsWon.addAll(qData.getCards().addRandomCommon(1)); + typeWon = "common"; + break; + case 5: + cardsWon.addAll(qData.getCards().addRandomUncommon(1)); + typeWon = "uncommon"; + break; + case 7: + cardsWon.addAll(qData.getCards().addRandomRareNotMythic(1)); + typeWon = "rare"; + break; + case 10: + cardsWon.addAll(qData.getCards().addRandomMythicRare(1)); + typeWon = "mythic rare"; + break; + case 25: + cardsWon.addAll(qData.getCards().addRandomMythicRare(5)); + typeWon = "mythic rare"; + break; + case 50: + cardsWon.addAll(qData.getCards().addRandomMythicRare(10)); + typeWon = "mythic rare"; + break; + default: + return; + } + + this.lblTemp1 = new TitleLabel("You have achieved a " + currentStreak + " win streak and won " + cardsWon.size() + " " + typeWon + " card" + ((cardsWon.size() != 1) ? "s" : "") + "!"); + final QuestWinLoseCardViewer cv = new QuestWinLoseCardViewer(cardsWon); + + this.view.getPnlCustom().add(this.lblTemp1, QuestWinLose.CONSTRAINTS_TITLE); + if (FModel.getPreferences().getPrefBoolean(FPref.UI_LARGE_CARD_VIEWERS)) { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS_LARGE); + } else { + this.view.getPnlCustom().add(cv, QuestWinLose.CONSTRAINTS_CARDS); + } + + } /** *

diff --git a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java index c8aec88ffed..cb104fc95f7 100644 --- a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java +++ b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java @@ -181,7 +181,11 @@ public final class QuestUtilCards { this.qa.getNewCardList().add(card, qty); } + private static final Predicate COMMON_PREDICATE = IPaperCard.Predicates.Presets.IS_COMMON; + private static final Predicate UNCOMMON_PREDICATE = IPaperCard.Predicates.Presets.IS_UNCOMMON; private static final Predicate RARE_PREDICATE = IPaperCard.Predicates.Presets.IS_RARE_OR_MYTHIC; + private static final Predicate ONLY_RARE_PREDICATE = IPaperCard.Predicates.Presets.IS_RARE; + private static final Predicate MYTHIC_PREDICATE = IPaperCard.Predicates.Presets.IS_MYTHIC_RARE; /** @@ -208,6 +212,32 @@ public final class QuestUtilCards { return card; } + /** + * Adds a random common. + * + * @param n the number of cards to add + * @return the list of cards added + */ + public List addRandomCommon(final int n) { + final Predicate myFilter = applyFormatFilter(QuestUtilCards.COMMON_PREDICATE); + final List newCards = Aggregates.random(Iterables.filter(FModel.getMagicDb().getCommonCards().getAllCards(), myFilter), n); + this.addAllCards(newCards); + return newCards; + } + + /** + * Adds a random uncommon. + * + * @param n the number of cards to add + * @return the list of cards added + */ + public List addRandomUncommon(final int n) { + final Predicate myFilter = applyFormatFilter(QuestUtilCards.UNCOMMON_PREDICATE); + final List newCards = Aggregates.random(Iterables.filter(FModel.getMagicDb().getCommonCards().getAllCards(), myFilter), n); + this.addAllCards(newCards); + return newCards; + } + /** * Adds the random rare. * @@ -223,6 +253,36 @@ public final class QuestUtilCards { return newCards; } + /** + * Adds the random rare. + * + * @param n + * the n + * @return the list + */ + public List addRandomRareNotMythic(final int n) { + final Predicate myFilter = applyFormatFilter(QuestUtilCards.ONLY_RARE_PREDICATE); + + final List newCards = Aggregates.random(Iterables.filter(FModel.getMagicDb().getCommonCards().getAllCards(), myFilter), n); + this.addAllCards(newCards); + return newCards; + } + + /** + * Adds the random rare. + * + * @param n + * the n + * @return the list + */ + public List addRandomMythicRare(final int n) { + final Predicate myFilter = applyFormatFilter(QuestUtilCards.MYTHIC_PREDICATE); + + final List newCards = Aggregates.random(Iterables.filter(FModel.getMagicDb().getCommonCards().getAllCards(), myFilter), n); + this.addAllCards(newCards); + return newCards; + } + /** * Setup new game card pool. *