diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml
index 5f89345bc38..052f4e3d094 100644
--- a/forge-gui-android/pom.xml
+++ b/forge-gui-android/pom.xml
@@ -1,7 +1,7 @@
4.0.0
-
+
yyyyMMdd-HHmm
jar
@@ -18,7 +18,7 @@
forge-gui-android
${packaging.type}
Forge Android
-
+
src
@@ -213,7 +213,7 @@
true
true
-
+
${project.build.directory}/${project.build.finalName}/${project.build.finalName}.apk
@@ -277,12 +277,21 @@
-
+
-
-
-
-
+
+
+
+
@@ -299,52 +308,57 @@
apk
-
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
- 1.7
-
-
- org.apache.ant
- ant-nodeps
- 1.8.1
-
-
- commons-net
- commons-net
- 1.4.1
-
-
- ant
- ant-commons-net
- 1.6.5
-
-
-
-
- android-ftp
- package
-
-
-
-
-
-
-
-
-
-
-
-
- run
-
-
-
-
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.7
+
+
+ org.apache.ant
+ ant-nodeps
+ 1.8.1
+
+
+ commons-net
+ commons-net
+ 1.4.1
+
+
+ ant
+ ant-commons-net
+ 1.6.5
+
+
+
+
+ android-ftp
+ package
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+
+
\ No newline at end of file
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java
index a315b49a948..94be1e7ee8d 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java
@@ -81,6 +81,17 @@ public enum CSubmenuDuels implements ICDoc {
quest.save();
}
});
+
+ view.getBtnRandomOpponent().setCommand(new UiCommand() {
+ @Override
+ public void run() {
+ FModel.getQuest().getDuelsManager().randomizeOpponents();
+ final List duels = FModel.getQuest().getDuelsManager().generateDuels();
+ SSubmenuQuestUtil.setEvent(duels.get((int) (Math.random() * duels.size())));
+ SSubmenuQuestUtil.startGame();
+ }
+ });
+
}
private final KeyAdapter _startOnEnter = new KeyAdapter() {
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/IVQuestStats.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/IVQuestStats.java
index 57fce9f00a5..638452b24aa 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/IVQuestStats.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/IVQuestStats.java
@@ -7,6 +7,10 @@ import forge.toolbox.FLabel;
/** Dictates methods required for a panel with stats/pet display. */
public interface IVQuestStats {
+
+ /** @return {@link forge.toolbox.FLabel} */
+ FLabel getBtnRandomOpponent();
+
/** @return {@link forge.toolbox.FLabel} */
FLabel getBtnBazaar();
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java
index 1ec9a730bd6..977fcf2b075 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java
@@ -285,4 +285,10 @@ public enum VSubmenuChallenges implements IVSubmenu, IVQuest
public FCheckBox getCbCharm() {
return cbCharm;
}
+
+ @Override
+ public FLabel getBtnRandomOpponent() {
+ return null;
+ }
+
}
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java
index 2b4895cf1d4..42ec60833b2 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java
@@ -73,15 +73,18 @@ public enum VSubmenuDuels implements IVSubmenu, IVQuestStats {
private final FLabel btnTravel = new FLabel.ButtonBuilder().text("Travel").fontSize(16).build();
private final FLabel btnBazaar = new FLabel.ButtonBuilder().text("Bazaar").fontSize(16).build();
private final FLabel btnSpellShop = new FLabel.ButtonBuilder().text("Spell Shop").fontSize(16).build();
+ private final FLabel btnRandomOpponent = new FLabel.ButtonBuilder().text("Random Duel").fontSize(16).build();
/**
* Constructor.
*/
private VSubmenuDuels() {
+
final String constraints = "h 30px!, gap 0 0 0 5px";
pnlStats.setLayout(new MigLayout("insets 0, gap 0, wrap, hidemode 0"));
pnlStats.add(btnUnlock, "w 150px!, h 30px!, gap 0 0 0 10px");
pnlStats.add(btnTravel, "w 150px!, h 30px!, gap 0 0 0 10px");
+ pnlStats.add(btnRandomOpponent, "w 150px!, h 30px!, gap 0 0 0 10px");
pnlStats.add(btnSpellShop, "w 150px!, h 30px!, gap 0 0 0 10px");
pnlStats.add(btnBazaar, "w 150px!, h 30px!, gap 0 0 0 10px");
pnlStats.add(lblWins, constraints);
@@ -94,6 +97,9 @@ public enum VSubmenuDuels implements IVSubmenu, IVQuestStats {
pnlStats.add(cbCharm, constraints);
cbxPet.addTo(pnlStats, constraints);
pnlStats.setOpaque(false);
+
+ btnRandomOpponent.setToolTipText("Starts a duel against a randomly selected opponent.");
+
}
/* (non-Javadoc)
@@ -211,6 +217,11 @@ public enum VSubmenuDuels implements IVSubmenu, IVQuestStats {
return btnSpellShop;
}
+ @Override
+ public FLabel getBtnRandomOpponent() {
+ return btnRandomOpponent;
+ }
+
@Override
public FCheckBox getCbPlant() {
return cbPlant;
diff --git a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java
index c8aa34fad20..e642f1b5ccf 100644
--- a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java
+++ b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java
@@ -605,7 +605,13 @@ public final class QuestUtilCards {
Collections.shuffle(editions);
- editions = editions.subList(0, Math.max(count / 2, 1));
+ int numberOfBoxes = Math.min(Math.max(count / 2, 1), editions.size());
+
+ if (numberOfBoxes == 0) {
+ return;
+ }
+
+ editions = editions.subList(0, numberOfBoxes);
List output = new ArrayList<>();
for (CardEdition e : editions) {