Add NeedForSpeed achievement

This commit is contained in:
drdev
2014-09-17 00:13:16 +00:00
parent 9174b5b62a
commit 3d3df48a43
7 changed files with 48 additions and 5 deletions

1
.gitattributes vendored
View File

@@ -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/Hellbent.java -text
forge-gui/src/main/java/forge/achievement/LifeToSpare.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/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/Overkill.java -text
forge-gui/src/main/java/forge/achievement/QuestAchievements.java -text forge-gui/src/main/java/forge/achievement/QuestAchievements.java -text
forge-gui/src/main/java/forge/achievement/SealedAchievements.java -text forge-gui/src/main/java/forge/achievement/SealedAchievements.java -text

View File

@@ -26,6 +26,7 @@ import forge.util.XmlUtil;
public abstract class AchievementCollection implements Iterable<Achievement> { public abstract class AchievementCollection implements Iterable<Achievement> {
private final Map<String, Achievement> achievements = new LinkedHashMap<String, Achievement>(); private final Map<String, Achievement> achievements = new LinkedHashMap<String, Achievement>();
private final String name, filename; private final String name, filename;
private final boolean isLimitedFormat;
static { static {
FileUtil.ensureDirectoryExists(ForgeConstants.ACHIEVEMENTS_DIR); FileUtil.ensureDirectoryExists(ForgeConstants.ACHIEVEMENTS_DIR);
@@ -38,9 +39,10 @@ public abstract class AchievementCollection implements Iterable<Achievement> {
cb.addItem(FModel.getAchievements(GameType.Quest)); cb.addItem(FModel.getAchievements(GameType.Quest));
} }
protected AchievementCollection(String name0, String filename0) { protected AchievementCollection(String name0, String filename0, boolean isLimitedFormat0) {
name = name0; name = name0;
filename = filename0; filename = filename0;
isLimitedFormat = isLimitedFormat0;
buildTopShelf(); buildTopShelf();
buildCoreShelves(); buildCoreShelves();
buildBottomShelf(); buildBottomShelf();
@@ -52,6 +54,12 @@ public abstract class AchievementCollection implements Iterable<Achievement> {
add("MatchWinStreak", new MatchWinStreak(10, 25, 50)); add("MatchWinStreak", new MatchWinStreak(10, 25, 50));
add("TotalGameWins", new TotalGameWins(250, 500, 1000)); add("TotalGameWins", new TotalGameWins(250, 500, 1000));
add("TotalMatchWins", new TotalMatchWins(100, 250, 500)); 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("Overkill", new Overkill(-25, -50, -100));
add("LifeToSpare", new LifeToSpare(20, 40, 80)); add("LifeToSpare", new LifeToSpare(20, 40, 80));
add("Hellbent", new Hellbent()); add("Hellbent", new Hellbent());

View File

@@ -5,7 +5,7 @@ import forge.properties.ForgeConstants;
public class ConstructedAchievements extends AchievementCollection { public class ConstructedAchievements extends AchievementCollection {
public ConstructedAchievements() { 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 //add achievements that should appear at the top above core achievements for each game mode

View File

@@ -4,7 +4,7 @@ import forge.properties.ForgeConstants;
public class DraftAchievements extends AchievementCollection { public class DraftAchievements extends AchievementCollection {
public DraftAchievements() { 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 //add achievements that should appear at the top above core achievements for each game mode

View 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;
}
}

View File

@@ -4,7 +4,7 @@ import forge.properties.ForgeConstants;
public class QuestAchievements extends AchievementCollection { public class QuestAchievements extends AchievementCollection {
public QuestAchievements() { 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 //add achievements that should appear at the top above core achievements for each game mode

View File

@@ -4,7 +4,7 @@ import forge.properties.ForgeConstants;
public class SealedAchievements extends AchievementCollection { public class SealedAchievements extends AchievementCollection {
public SealedAchievements() { 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 //add achievements that should appear at the top above core achievements for each game mode