Skip to content

Commit 68a73a4

Browse files
committed
Doing some refactoring
1 parent de127f2 commit 68a73a4

File tree

4 files changed

+102
-105
lines changed

4 files changed

+102
-105
lines changed

src/main/java/com/dinosaur/dinosaurexploder/achievements/Achievement.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,22 @@
66

77
public abstract class Achievement implements Serializable {
88

9-
protected boolean completed = false;
10-
protected int rewardCoins;
9+
protected boolean completed = false;
10+
protected int rewardCoins;
1111

12+
public boolean isCompleted() {
13+
return completed;
14+
}
1215

13-
public boolean isCompleted() {
14-
return completed;
15-
}
16+
public void onComplete(String description) {
17+
FXGL.getNotificationService().pushNotification("Achievement unlocked: " + description);
18+
}
1619

20+
public int getRewardCoins() {
21+
return rewardCoins;
22+
}
1723

18-
public void onComplete(String description) {
19-
FXGL.getNotificationService().pushNotification("Achievement unlocked: " + description);
20-
}
24+
public abstract void update(double tpf);
2125

22-
public int getRewardCoins() {
23-
return rewardCoins;
24-
}
25-
26-
public abstract void update(double tpf);
27-
28-
public abstract Boolean onDinosaurKilled();
26+
public abstract Boolean onDinosaurKilled();
2927
}
Lines changed: 63 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,82 @@
11
package com.dinosaur.dinosaurexploder.achievements;
22

33
import com.dinosaur.dinosaurexploder.constants.GameConstants;
4+
45
import java.io.*;
56
import java.util.ArrayList;
67
import java.util.List;
78

89
public class AchievementManager {
910

10-
private final List<Achievement> allAchievements = new ArrayList<>();
11-
private final List<Achievement> activeAchievements = new ArrayList<>();
12-
13-
14-
public AchievementManager() {
15-
// Register all available achievements here
16-
allAchievements.add(new KillCountAchievement(1, 50));
17-
allAchievements.add(new KillCountAchievement(2, 50));
18-
allAchievements.add(new KillCountAchievement(10, 50));
19-
allAchievements.add(new KillCountAchievement(20, 100));
20-
}
11+
private final List<Achievement> allAchievements = new ArrayList<>();
12+
private final List<Achievement> activeAchievements = new ArrayList<>();
2113

22-
// Called once when the game starts
23-
public void init() {
24-
if (allAchievements.isEmpty()) return;
14+
public AchievementManager() {
15+
// Register all available achievements here
16+
allAchievements.add(new KillCountAchievement(1, 50));
17+
allAchievements.add(new KillCountAchievement(2, 50));
18+
allAchievements.add(new KillCountAchievement(10, 50));
19+
allAchievements.add(new KillCountAchievement(20, 100));
20+
}
2521

26-
activeAchievements.addAll(loadAchievement());
27-
if (activeAchievements.isEmpty())
28-
{
29-
saveAchievement(allAchievements);
30-
activeAchievements.addAll(allAchievements);
31-
}
32-
}
22+
// Called once when the game starts
23+
public void init() {
24+
if (allAchievements.isEmpty()) return;
3325

34-
// Called every frame
35-
public void update(double tpf) {
36-
for (Achievement achievement : activeAchievements) {
37-
if (!achievement.isCompleted()) {
38-
achievement.update(tpf);
39-
}
40-
}
41-
}
26+
activeAchievements.addAll(loadAchievement());
27+
if (activeAchievements.isEmpty()) {
28+
saveAchievement(allAchievements);
29+
activeAchievements.addAll(allAchievements);
30+
}
31+
}
4232

43-
// Called when a dinosaur is killed
44-
public void notifyDinosaurKilled() {
45-
for (Achievement achievement : activeAchievements) {
46-
Boolean complete = achievement.onDinosaurKilled();
47-
}
48-
saveAchievement(activeAchievements);
33+
// Called every frame
34+
public void update(double tpf) {
35+
for (Achievement achievement : activeAchievements) {
36+
if (!achievement.isCompleted()) {
37+
achievement.update(tpf);
38+
}
39+
}
40+
}
4941

50-
}
42+
// Called when a dinosaur is killed
43+
public void notifyDinosaurKilled() {
44+
for (Achievement achievement : activeAchievements) {
45+
Boolean complete = achievement.onDinosaurKilled();
46+
}
47+
saveAchievement(activeAchievements);
48+
}
5149

52-
public List<Achievement> getActiveAchievements() {
53-
return activeAchievements;
54-
}
50+
public List<Achievement> getActiveAchievements() {
51+
return activeAchievements;
52+
}
5553

56-
public Achievement getActiveAchievement() {
57-
if (activeAchievements.isEmpty()) {
58-
return null;
59-
}
60-
return activeAchievements.getFirst();
61-
}
54+
public Achievement getActiveAchievement() {
55+
if (activeAchievements.isEmpty()) {
56+
return null;
57+
}
58+
return activeAchievements.getFirst();
59+
}
6260

63-
///Get the list of achievement save in the achievement.ser file
64-
public List<Achievement> loadAchievement() {
65-
List<Achievement> achievementFromFile = new ArrayList<>();
66-
try (ObjectInputStream in =
67-
new ObjectInputStream(new FileInputStream(GameConstants.ACHIEVEMENTS_FILE))) {
68-
achievementFromFile= (List<Achievement>) in.readObject();
69-
} catch (IOException | ClassNotFoundException e) {
70-
System.out.println("Failed to load achievements from file");
71-
}
72-
return achievementFromFile;
73-
}
61+
/// Get the list of achievement save in the achievement.ser file
62+
public List<Achievement> loadAchievement() {
63+
List<Achievement> achievementFromFile = new ArrayList<>();
64+
try (ObjectInputStream in =
65+
new ObjectInputStream(new FileInputStream(GameConstants.ACHIEVEMENTS_FILE))) {
66+
achievementFromFile = (List<Achievement>) in.readObject();
67+
} catch (IOException | ClassNotFoundException e) {
68+
System.out.println("Failed to load achievements from file");
69+
}
70+
return achievementFromFile;
71+
}
7472

75-
/// Save activeAchievement in the achievement.ser file
76-
public void saveAchievement(List<Achievement> listToSave) {
77-
try (ObjectOutputStream out =
78-
new ObjectOutputStream(new FileOutputStream(GameConstants.ACHIEVEMENTS_FILE))) {
79-
out.writeObject(listToSave);
80-
} catch (IOException e) {
81-
System.err.println("Error saving achievement : " + e.getMessage());
82-
}
83-
}
73+
/// Save activeAchievement in the achievement.ser file
74+
public void saveAchievement(List<Achievement> listToSave) {
75+
try (ObjectOutputStream out =
76+
new ObjectOutputStream(new FileOutputStream(GameConstants.ACHIEVEMENTS_FILE))) {
77+
out.writeObject(listToSave);
78+
} catch (IOException e) {
79+
System.err.println("Error saving achievement : " + e.getMessage());
80+
}
81+
}
8482
}

src/main/java/com/dinosaur/dinosaurexploder/achievements/KillCountAchievement.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,35 @@
33

44
public class KillCountAchievement extends Achievement {
55

6-
private final int targetKills;
7-
private int currentKills = 0;
6+
private final int targetKills;
7+
private int currentKills = 0;
88

9-
public KillCountAchievement(int targetKills, int rewardCoins) {
10-
this.targetKills = targetKills;
11-
this.rewardCoins = rewardCoins;
12-
}
9+
public KillCountAchievement(int targetKills, int rewardCoins) {
10+
this.targetKills = targetKills;
11+
this.rewardCoins = rewardCoins;
12+
}
1313

14-
public String getDescription() {
15-
return "Kill " + targetKills + " dinosaurs";
16-
}
14+
public String getDescription() {
15+
return "Kill " + targetKills + " dinosaurs";
16+
}
1717

1818
public Boolean onDinosaurKilled() {
19-
if (completed) return(true);
20-
21-
currentKills++;
22-
23-
if (currentKills >= targetKills) {
24-
completed = true;
25-
onComplete(getDescription());
26-
return(true);
27-
}
28-
return(false);
29-
}
30-
31-
@Override
32-
public void update(double tpf) {
33-
// Not needed for count-based achievement
34-
}
19+
if (completed) return (true);
20+
21+
currentKills++;
22+
23+
if (currentKills >= targetKills) {
24+
completed = true;
25+
onComplete(getDescription());
26+
return (true);
27+
}
28+
return (false);
29+
}
30+
31+
@Override
32+
public void update(double tpf) {
33+
// Not needed for count-based achievement
34+
}
3535

3636

3737
}

src/test/java/com/dinosaur/dinosaurexploder/achievements/AchievementTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.junit.jupiter.api.AfterEach;
55
import org.junit.jupiter.api.BeforeEach;
66
import org.junit.jupiter.api.Test;
7+
78
import java.awt.*;
89
import java.util.ArrayList;
910
import java.util.List;

0 commit comments

Comments
 (0)