From 572218d8b70d341f2f0b13c6d42e9affbf9754dc Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Fri, 20 Oct 2023 02:51:05 -0700 Subject: [PATCH] Unhardcode rogue schedule id --- .../java/emu/lunarcore/data/GameData.java | 1 + .../java/emu/lunarcore/data/GameDepot.java | 14 ++++++ .../data/excel/RogueScheduleExcel.java | 47 +++++++++++++++++++ .../packet/send/PacketGetRogueInfoScRsp.java | 9 +++- 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/main/java/emu/lunarcore/data/excel/RogueScheduleExcel.java diff --git a/src/main/java/emu/lunarcore/data/GameData.java b/src/main/java/emu/lunarcore/data/GameData.java index e60d3b2..aad8eac 100644 --- a/src/main/java/emu/lunarcore/data/GameData.java +++ b/src/main/java/emu/lunarcore/data/GameData.java @@ -30,6 +30,7 @@ public class GameData { @Getter private static Int2ObjectMap challengeExcelMap = new Int2ObjectOpenHashMap<>(); @Getter private static Int2ObjectMap challengeTargetExcelMap = new Int2ObjectOpenHashMap<>(); @Getter private static Int2ObjectMap rogueAreaExcelMap = new Int2ObjectOpenHashMap<>(); + @Getter private static Int2ObjectMap rogueScheduleExcelMap = new Int2ObjectOpenHashMap<>(); @Getter private static Int2ObjectMap shopExcelMap = new Int2ObjectOpenHashMap<>(); private static Int2ObjectMap avatarPromotionExcelMap = new Int2ObjectOpenHashMap<>(); diff --git a/src/main/java/emu/lunarcore/data/GameDepot.java b/src/main/java/emu/lunarcore/data/GameDepot.java index 44d3666..d1fc59c 100644 --- a/src/main/java/emu/lunarcore/data/GameDepot.java +++ b/src/main/java/emu/lunarcore/data/GameDepot.java @@ -5,6 +5,7 @@ import java.util.List; import emu.lunarcore.data.excel.RelicMainAffixExcel; import emu.lunarcore.data.excel.RelicSubAffixExcel; +import emu.lunarcore.data.excel.RogueScheduleExcel; import emu.lunarcore.util.Utils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -34,4 +35,17 @@ public class GameDepot { public static List getRelicSubAffixList(int groupId) { return relicSubAffixDepot.get(groupId); } + + // TODO cache this so we dont have to run this function everytime we get the schedule + public static RogueScheduleExcel getCurrentRogueSchedule() { + long time = System.currentTimeMillis(); + + for (var schedule : GameData.getRogueScheduleExcelMap().values()) { + if (time >= schedule.getBeginTime() && time < schedule.getEndTime()) { + return schedule; + } + } + + return null; + } } diff --git a/src/main/java/emu/lunarcore/data/excel/RogueScheduleExcel.java b/src/main/java/emu/lunarcore/data/excel/RogueScheduleExcel.java new file mode 100644 index 0000000..8f09d4d --- /dev/null +++ b/src/main/java/emu/lunarcore/data/excel/RogueScheduleExcel.java @@ -0,0 +1,47 @@ +package emu.lunarcore.data.excel; + +import java.time.*; +import java.time.format.DateTimeFormatter; + +import emu.lunarcore.data.GameResource; +import emu.lunarcore.data.ResourceType; +import lombok.AccessLevel; +import lombok.Getter; + +@Getter +@ResourceType(name = {"ScheduleDataRogue.json"}) +public class RogueScheduleExcel extends GameResource { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + private int ID; + + @Getter(AccessLevel.NONE) + private String BeginTime; + @Getter(AccessLevel.NONE) + private String EndTime; + + private transient long beginTime; + private transient long endTime; + + @Override + public int getId() { + return ID; + } + + @Override + public void onLoad() { + try { + this.beginTime = LocalDateTime.from(formatter.parse(this.BeginTime)) + .atOffset(ZoneOffset.UTC) + .toInstant() + .toEpochMilli(); + + this.endTime = LocalDateTime.from(formatter.parse(this.EndTime)) + .atOffset(ZoneOffset.UTC) + .toInstant() + .toEpochMilli(); + } catch (Exception e) { + + } + } +} diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueInfoScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueInfoScRsp.java index beec24f..77c7c4e 100644 --- a/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueInfoScRsp.java +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueInfoScRsp.java @@ -3,6 +3,7 @@ package emu.lunarcore.server.packet.send; import java.util.concurrent.TimeUnit; import emu.lunarcore.data.GameData; +import emu.lunarcore.data.GameDepot; import emu.lunarcore.proto.GetRogueInfoScRspOuterClass.GetRogueInfoScRsp; import emu.lunarcore.proto.RogueAreaOuterClass.RogueArea; import emu.lunarcore.proto.RogueAreaStatusOuterClass.RogueAreaStatus; @@ -18,10 +19,16 @@ public class PacketGetRogueInfoScRsp extends BasePacket { public PacketGetRogueInfoScRsp() { super(CmdId.GetRogueInfoScRsp); - int seasonId = 67; // TODO un hardcode + var schedule = GameDepot.getCurrentRogueSchedule(); + + int seasonId = 0; long beginTime = (System.currentTimeMillis() / 1000) - TimeUnit.DAYS.toSeconds(1); long endTime = beginTime + TimeUnit.DAYS.toSeconds(8); + if (schedule != null) { + seasonId = schedule.getId() % 100000; + } + var score = RogueScoreRewardInfo.newInstance() .setPoolId(seasonId) .setPoolRefreshed(true)