diff --git a/forge-gui/src/main/java/forge/achievement/AchievementCollection.java b/forge-gui/src/main/java/forge/achievement/AchievementCollection.java index 82f6054d6c1..e0098b81487 100644 --- a/forge-gui/src/main/java/forge/achievement/AchievementCollection.java +++ b/forge-gui/src/main/java/forge/achievement/AchievementCollection.java @@ -41,11 +41,24 @@ public abstract class AchievementCollection implements Iterable { protected AchievementCollection(String name0, String filename0) { name = name0; filename = filename0; - buildAchievementList(); + buildTopShelf(); + buildCoreShelves(); + buildBottomShelf(); load(); } - protected abstract void buildAchievementList(); + private void buildCoreShelves() { + add("GameWinStreak", new GameWinStreak(10, 25, 50)); + add("MatchWinStreak", new MatchWinStreak(10, 25, 50)); + add("TotalGameWins", new TotalGameWins(250, 500, 1000)); + add("TotalMatchWins", new TotalMatchWins(100, 250, 500)); + add("Overkill", new Overkill(25, 50, 100)); + add("LifeToSpare", new LifeToSpare(20, 40, 80)); + add("Hellbent", new Hellbent()); + } + + protected abstract void buildTopShelf(); + protected abstract void buildBottomShelf(); protected void add(String name, Achievement achievement) { achievements.put(name, achievement); diff --git a/forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java b/forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java index 452881cd525..7f4aa795a20 100644 --- a/forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java +++ b/forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java @@ -7,14 +7,13 @@ public class ConstructedAchievements extends AchievementCollection { super("Constructed", ForgeConstants.ACHIEVEMENTS_DIR + "constructed.xml"); } + //add achievements that should appear at the top above core achievements for each game mode @Override - protected void buildAchievementList() { - add("GameWinStreak", new GameWinStreak(10, 25, 50)); - add("MatchWinStreak", new MatchWinStreak(10, 25, 50)); - add("TotalGameWins", new TotalGameWins(250, 500, 1000)); - add("TotalMatchWins", new TotalMatchWins(100, 250, 500)); - add("Overkill", new Overkill(25, 50, 100)); - add("LifeToSpare", new LifeToSpare(20, 40, 80)); - add("Hellbent", new Hellbent()); + protected void buildTopShelf() { + } + + //add achievements that should appear at the bottom below core achievements for each game mode + @Override + protected void buildBottomShelf() { } } diff --git a/forge-gui/src/main/java/forge/achievement/DraftAchievements.java b/forge-gui/src/main/java/forge/achievement/DraftAchievements.java index 3466412f84b..a68aadb049d 100644 --- a/forge-gui/src/main/java/forge/achievement/DraftAchievements.java +++ b/forge-gui/src/main/java/forge/achievement/DraftAchievements.java @@ -7,14 +7,13 @@ public class DraftAchievements extends AchievementCollection { super("Booster Draft", ForgeConstants.ACHIEVEMENTS_DIR + "draft.xml"); } + //add achievements that should appear at the top above core achievements for each game mode @Override - protected void buildAchievementList() { - add("GameWinStreak", new GameWinStreak(10, 25, 50)); - add("MatchWinStreak", new MatchWinStreak(10, 25, 50)); - add("TotalGameWins", new TotalGameWins(250, 500, 1000)); - add("TotalMatchWins", new TotalMatchWins(100, 250, 500)); - add("Overkill", new Overkill(25, 50, 100)); - add("LifeToSpare", new LifeToSpare(20, 40, 80)); - add("Hellbent", new Hellbent()); + protected void buildTopShelf() { + } + + //add achievements that should appear at the bottom below core achievements for each game mode + @Override + protected void buildBottomShelf() { } } diff --git a/forge-gui/src/main/java/forge/achievement/QuestAchievements.java b/forge-gui/src/main/java/forge/achievement/QuestAchievements.java index b2cae8a3b58..92a4dac11c9 100644 --- a/forge-gui/src/main/java/forge/achievement/QuestAchievements.java +++ b/forge-gui/src/main/java/forge/achievement/QuestAchievements.java @@ -7,14 +7,13 @@ public class QuestAchievements extends AchievementCollection { super("Quest Mode", ForgeConstants.ACHIEVEMENTS_DIR + "quest.xml"); } + //add achievements that should appear at the top above core achievements for each game mode @Override - protected void buildAchievementList() { - add("GameWinStreak", new GameWinStreak(10, 25, 50)); - add("MatchWinStreak", new MatchWinStreak(10, 25, 50)); - add("TotalGameWins", new TotalGameWins(250, 500, 1000)); - add("TotalMatchWins", new TotalMatchWins(100, 250, 500)); - add("Overkill", new Overkill(25, 50, 100)); - add("LifeToSpare", new LifeToSpare(20, 40, 80)); - add("Hellbent", new Hellbent()); + protected void buildTopShelf() { + } + + //add achievements that should appear at the bottom below core achievements for each game mode + @Override + protected void buildBottomShelf() { } } diff --git a/forge-gui/src/main/java/forge/achievement/SealedAchievements.java b/forge-gui/src/main/java/forge/achievement/SealedAchievements.java index a716708e490..e95228ff0be 100644 --- a/forge-gui/src/main/java/forge/achievement/SealedAchievements.java +++ b/forge-gui/src/main/java/forge/achievement/SealedAchievements.java @@ -7,14 +7,13 @@ public class SealedAchievements extends AchievementCollection { super("Sealed Deck", ForgeConstants.ACHIEVEMENTS_DIR + "sealed.xml"); } + //add achievements that should appear at the top above core achievements for each game mode @Override - protected void buildAchievementList() { - add("GameWinStreak", new GameWinStreak(10, 25, 50)); - add("MatchWinStreak", new MatchWinStreak(10, 25, 50)); - add("TotalGameWins", new TotalGameWins(250, 500, 1000)); - add("TotalMatchWins", new TotalMatchWins(100, 250, 500)); - add("Overkill", new Overkill(25, 50, 100)); - add("LifeToSpare", new LifeToSpare(20, 40, 80)); - add("Hellbent", new Hellbent()); + protected void buildTopShelf() { + } + + //add achievements that should appear at the bottom below core achievements for each game mode + @Override + protected void buildBottomShelf() { } }