From 34c11c6b46c546901da6532205370041cbe62f6a Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 27 Aug 2016 14:12:48 +0000 Subject: [PATCH] - Added a way to implement persistent challenges by adding Persistent=true to the challenge deck metadata. Persistent challenges do not disappear if a player lost the match (and thus stay until the player wins). --- .../java/forge/quest/QuestEventChallenge.java | 22 +++++++++++++++++++ .../forge/quest/QuestWinLoseController.java | 12 +++++----- .../forge/quest/io/QuestChallengeReader.java | 1 + 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/forge-gui/src/main/java/forge/quest/QuestEventChallenge.java b/forge-gui/src/main/java/forge/quest/QuestEventChallenge.java index 3afac377b5a..0acca17e89b 100644 --- a/forge-gui/src/main/java/forge/quest/QuestEventChallenge.java +++ b/forge-gui/src/main/java/forge/quest/QuestEventChallenge.java @@ -69,6 +69,9 @@ public class QuestEventChallenge extends QuestEvent { /** The ai extra cards. */ private List aiExtraCards = new ArrayList(); + /** If persistent, the challenge does not disappear if the player fails it. */ + private boolean persistent = false; + private Deck humanDeck = null; /** @@ -208,6 +211,25 @@ public class QuestEventChallenge extends QuestEvent { this.repeatable = repeatable0; } + /** + * Checks if is persistent. + * + * @return the persistent + */ + public boolean isPersistent() { + return this.persistent; + } + + /** + * Sets the persistent. + * + * @param persistent0 + * the repeatable to set + */ + public void setPersistent(final boolean persistent0) { + this.persistent = persistent0; + } + /** * Gets the ai life. * diff --git a/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java b/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java index 2ca95593952..3845fea9c1a 100644 --- a/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java +++ b/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java @@ -187,12 +187,14 @@ public class QuestWinLoseController { } if (qEvent instanceof QuestEventChallenge) { - final String id = ((QuestEventChallenge) qEvent).getId(); - qData.getAchievements().getCurrentChallenges().remove(id); - qData.getAchievements().addLockedChallenge(id); + if (wonMatch || (!((QuestEventChallenge)qEvent).isPersistent())) { + final String id = ((QuestEventChallenge) qEvent).getId(); + qData.getAchievements().getCurrentChallenges().remove(id); + qData.getAchievements().addLockedChallenge(id); - // Increment challenge counter to limit challenges available - qData.getAchievements().addChallengesPlayed(); + // Increment challenge counter to limit challenges available + qData.getAchievements().addChallengesPlayed(); + } } qData.setCurrentEvent(null); diff --git a/forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java b/forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java index fb32390bfc5..6da09920ac9 100644 --- a/forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java +++ b/forge-gui/src/main/java/forge/quest/io/QuestChallengeReader.java @@ -32,6 +32,7 @@ public class QuestChallengeReader extends StorageReaderFolder