diff --git a/src/main/java/emu/nebula/data/GameData.java b/src/main/java/emu/nebula/data/GameData.java index 7610f86..a13fe4e 100644 --- a/src/main/java/emu/nebula/data/GameData.java +++ b/src/main/java/emu/nebula/data/GameData.java @@ -97,6 +97,9 @@ public class GameData { @Getter private static DataTable DailyQuestDataTable = new DataTable<>(); @Getter private static DataTable DailyQuestActiveDataTable = new DataTable<>(); + // Achievements + @Getter private static DataTable AchievementDataTable = new DataTable<>(); + // Tutorial @Getter private static DataTable TutorialLevelDataTable = new DataTable<>(); diff --git a/src/main/java/emu/nebula/data/resources/AchievementDef.java b/src/main/java/emu/nebula/data/resources/AchievementDef.java new file mode 100644 index 0000000..46e7d0c --- /dev/null +++ b/src/main/java/emu/nebula/data/resources/AchievementDef.java @@ -0,0 +1,26 @@ +package emu.nebula.data.resources; + +import emu.nebula.data.BaseDef; +import emu.nebula.data.ResourceType; + +import lombok.Getter; + +@Getter +@ResourceType(name = "Achievement.json") +public class AchievementDef extends BaseDef { + private int Id; + private int Type; + private int CompleteCond; + private int AimNumShow; + private int[] Prerequisites; + + // Reward + private int Tid1; + private int Qty1; + + @Override + public int getId() { + return Id; + } + +} diff --git a/src/main/java/emu/nebula/server/handlers/HandlerAchievementInfoReq.java b/src/main/java/emu/nebula/server/handlers/HandlerAchievementInfoReq.java index af8555c..45fea5d 100644 --- a/src/main/java/emu/nebula/server/handlers/HandlerAchievementInfoReq.java +++ b/src/main/java/emu/nebula/server/handlers/HandlerAchievementInfoReq.java @@ -2,8 +2,11 @@ package emu.nebula.server.handlers; import emu.nebula.net.NetHandler; import emu.nebula.net.NetMsgId; +import emu.nebula.proto.Public.Achievement; import emu.nebula.proto.Public.Achievements; +import emu.nebula.proto.Public.QuestProgress; import emu.nebula.net.HandlerId; +import emu.nebula.data.GameData; import emu.nebula.net.GameSession; @HandlerId(NetMsgId.achievement_info_req) @@ -11,8 +14,24 @@ public class HandlerAchievementInfoReq extends NetHandler { @Override public byte[] handle(GameSession session, byte[] message) throws Exception { + // Build response var rsp = Achievements.newInstance(); + for (var data : GameData.getAchievementDataTable()) { + var progress = QuestProgress.newInstance() + .setCur(data.getAimNumShow()) + .setMax(data.getAimNumShow()); + + var info = Achievement.newInstance() + .setId(data.getId()) + .setStatus(2) + .setCompleted(session.getPlayer().getCreateTime()) + .addProgress(progress); + + rsp.addList(info); + } + + // Encode and send return session.encodeMsg(NetMsgId.achievement_info_succeed_ack, rsp); }