mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Add NeedForSpeed achievement
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -16661,6 +16661,7 @@ forge-gui/src/main/java/forge/achievement/GameWinStreak.java -text
|
||||
forge-gui/src/main/java/forge/achievement/Hellbent.java -text
|
||||
forge-gui/src/main/java/forge/achievement/LifeToSpare.java -text
|
||||
forge-gui/src/main/java/forge/achievement/MatchWinStreak.java -text
|
||||
forge-gui/src/main/java/forge/achievement/NeedForSpeed.java -text
|
||||
forge-gui/src/main/java/forge/achievement/Overkill.java -text
|
||||
forge-gui/src/main/java/forge/achievement/QuestAchievements.java -text
|
||||
forge-gui/src/main/java/forge/achievement/SealedAchievements.java -text
|
||||
|
||||
@@ -26,6 +26,7 @@ import forge.util.XmlUtil;
|
||||
public abstract class AchievementCollection implements Iterable<Achievement> {
|
||||
private final Map<String, Achievement> achievements = new LinkedHashMap<String, Achievement>();
|
||||
private final String name, filename;
|
||||
private final boolean isLimitedFormat;
|
||||
|
||||
static {
|
||||
FileUtil.ensureDirectoryExists(ForgeConstants.ACHIEVEMENTS_DIR);
|
||||
@@ -38,9 +39,10 @@ public abstract class AchievementCollection implements Iterable<Achievement> {
|
||||
cb.addItem(FModel.getAchievements(GameType.Quest));
|
||||
}
|
||||
|
||||
protected AchievementCollection(String name0, String filename0) {
|
||||
protected AchievementCollection(String name0, String filename0, boolean isLimitedFormat0) {
|
||||
name = name0;
|
||||
filename = filename0;
|
||||
isLimitedFormat = isLimitedFormat0;
|
||||
buildTopShelf();
|
||||
buildCoreShelves();
|
||||
buildBottomShelf();
|
||||
@@ -52,6 +54,12 @@ public abstract class AchievementCollection implements Iterable<Achievement> {
|
||||
add("MatchWinStreak", new MatchWinStreak(10, 25, 50));
|
||||
add("TotalGameWins", new TotalGameWins(250, 500, 1000));
|
||||
add("TotalMatchWins", new TotalMatchWins(100, 250, 500));
|
||||
if (isLimitedFormat) { //make need for speed goal more realistic for limited formats
|
||||
add("NeedForSpeed", new NeedForSpeed(8, 6, 4));
|
||||
}
|
||||
else {
|
||||
add("NeedForSpeed", new NeedForSpeed(5, 3, 1));
|
||||
}
|
||||
add("Overkill", new Overkill(-25, -50, -100));
|
||||
add("LifeToSpare", new LifeToSpare(20, 40, 80));
|
||||
add("Hellbent", new Hellbent());
|
||||
|
||||
@@ -5,7 +5,7 @@ import forge.properties.ForgeConstants;
|
||||
|
||||
public class ConstructedAchievements extends AchievementCollection {
|
||||
public ConstructedAchievements() {
|
||||
super("Constructed", ForgeConstants.ACHIEVEMENTS_DIR + "constructed.xml");
|
||||
super("Constructed", ForgeConstants.ACHIEVEMENTS_DIR + "constructed.xml", false);
|
||||
}
|
||||
|
||||
//add achievements that should appear at the top above core achievements for each game mode
|
||||
|
||||
@@ -4,7 +4,7 @@ import forge.properties.ForgeConstants;
|
||||
|
||||
public class DraftAchievements extends AchievementCollection {
|
||||
public DraftAchievements() {
|
||||
super("Booster Draft", ForgeConstants.ACHIEVEMENTS_DIR + "draft.xml");
|
||||
super("Booster Draft", ForgeConstants.ACHIEVEMENTS_DIR + "draft.xml", true);
|
||||
}
|
||||
|
||||
//add achievements that should appear at the top above core achievements for each game mode
|
||||
|
||||
34
forge-gui/src/main/java/forge/achievement/NeedForSpeed.java
Normal file
34
forge-gui/src/main/java/forge/achievement/NeedForSpeed.java
Normal file
@@ -0,0 +1,34 @@
|
||||
package forge.achievement;
|
||||
|
||||
import forge.game.Game;
|
||||
import forge.game.player.Player;
|
||||
|
||||
public class NeedForSpeed extends Achievement {
|
||||
public NeedForSpeed(int bronze0, int silver0, int gold0) {
|
||||
super("Need for Speed",
|
||||
String.format("Win a game by turn %d.", bronze0), bronze0,
|
||||
String.format("Win a game by turn %d.", silver0), silver0,
|
||||
String.format("Win a game by turn %d.", gold0), gold0);
|
||||
best = Integer.MAX_VALUE; //initialize best to max value so any
|
||||
}
|
||||
|
||||
public boolean needSave() {
|
||||
return best != Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int evaluate(Player player, Game game) {
|
||||
if (player.getOutcome().hasWon()) {
|
||||
return player.getTurn();
|
||||
}
|
||||
return Integer.MAX_VALUE; //indicate that player didn't win
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSubTitle() {
|
||||
if (best < Integer.MAX_VALUE) {
|
||||
return "Best: Turn " + best;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import forge.properties.ForgeConstants;
|
||||
|
||||
public class QuestAchievements extends AchievementCollection {
|
||||
public QuestAchievements() {
|
||||
super("Quest Mode", ForgeConstants.ACHIEVEMENTS_DIR + "quest.xml");
|
||||
super("Quest Mode", ForgeConstants.ACHIEVEMENTS_DIR + "quest.xml", false);
|
||||
}
|
||||
|
||||
//add achievements that should appear at the top above core achievements for each game mode
|
||||
|
||||
@@ -4,7 +4,7 @@ import forge.properties.ForgeConstants;
|
||||
|
||||
public class SealedAchievements extends AchievementCollection {
|
||||
public SealedAchievements() {
|
||||
super("Sealed Deck", ForgeConstants.ACHIEVEMENTS_DIR + "sealed.xml");
|
||||
super("Sealed Deck", ForgeConstants.ACHIEVEMENTS_DIR + "sealed.xml", true);
|
||||
}
|
||||
|
||||
//add achievements that should appear at the top above core achievements for each game mode
|
||||
|
||||
Reference in New Issue
Block a user