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.
*