From ca5fef3f5baf4c62c176b0ee5b62262e49638c2c Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Fri, 20 Oct 2023 03:06:16 -0700 Subject: [PATCH] Refactor rogue infos and unhardcode rogue pool ids --- .../emu/lunarcore/game/player/Player.java | 5 +- .../lunarcore/game/rogue/RogueManager.java | 64 +++++++++++++++++++ .../packet/recv/HandlerGetRogueInfoCsReq.java | 2 +- .../HandlerGetRogueScoreRewardInfoCsReq.java | 2 +- .../packet/send/PacketGetRogueInfoScRsp.java | 56 ++-------------- .../PacketGetRogueScoreRewardInfoScRsp.java | 5 +- 6 files changed, 77 insertions(+), 57 deletions(-) create mode 100644 src/main/java/emu/lunarcore/game/rogue/RogueManager.java diff --git a/src/main/java/emu/lunarcore/game/player/Player.java b/src/main/java/emu/lunarcore/game/player/Player.java index a5760fe..3648676 100644 --- a/src/main/java/emu/lunarcore/game/player/Player.java +++ b/src/main/java/emu/lunarcore/game/player/Player.java @@ -28,6 +28,7 @@ import emu.lunarcore.game.enums.PropState; import emu.lunarcore.game.gacha.PlayerGachaInfo; import emu.lunarcore.game.inventory.Inventory; import emu.lunarcore.game.mail.Mailbox; +import emu.lunarcore.game.rogue.RogueManager; import emu.lunarcore.game.scene.Scene; import emu.lunarcore.game.scene.entity.EntityProp; import emu.lunarcore.game.scene.entity.GameEntity; @@ -84,7 +85,8 @@ public class Player { private transient final ChatManager chatManager; private transient final Mailbox mailbox; private transient final ChallengeManager challengeManager; - + private transient final RogueManager rogueManager; + // Database persistent data private LineupManager lineupManager; private PlayerGachaInfo gachaInfo; @@ -105,6 +107,7 @@ public class Player { this.chatManager = new ChatManager(this); this.mailbox = new Mailbox(this); this.challengeManager = new ChallengeManager(this); + this.rogueManager = new RogueManager(this); } // Called when player is created diff --git a/src/main/java/emu/lunarcore/game/rogue/RogueManager.java b/src/main/java/emu/lunarcore/game/rogue/RogueManager.java new file mode 100644 index 0000000..7be3972 --- /dev/null +++ b/src/main/java/emu/lunarcore/game/rogue/RogueManager.java @@ -0,0 +1,64 @@ +package emu.lunarcore.game.rogue; + +import java.util.concurrent.TimeUnit; + +import emu.lunarcore.data.GameData; +import emu.lunarcore.data.GameDepot; +import emu.lunarcore.game.player.BasePlayerManager; +import emu.lunarcore.game.player.Player; +import emu.lunarcore.proto.RogueAreaOuterClass.RogueArea; +import emu.lunarcore.proto.RogueAreaStatusOuterClass.RogueAreaStatus; +import emu.lunarcore.proto.RogueInfoDataOuterClass.RogueInfoData; +import emu.lunarcore.proto.RogueInfoOuterClass.RogueInfo; +import emu.lunarcore.proto.RogueScoreRewardInfoOuterClass.RogueScoreRewardInfo; +import emu.lunarcore.proto.RogueSeasonInfoOuterClass.RogueSeasonInfo; + +public class RogueManager extends BasePlayerManager { + + public RogueManager(Player player) { + super(player); + } + + public RogueInfo toProto() { + 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(20 + getPlayer().getWorldLevel()) // TODO pool ids should not change when world level changes + .setPoolRefreshed(true) + .setHasTakenInitialScore(true); + + var season = RogueSeasonInfo.newInstance() + .setBeginTime(beginTime) + .setRogueSeasonId(seasonId) + .setEndTime(endTime); + + var data = RogueInfoData.newInstance() + .setRogueScoreInfo(score) + .setRogueSeasonInfo(season); + + var proto = RogueInfo.newInstance() + .setRogueScoreInfo(score) + .setRogueData(data) + .setRogueSeasonId(seasonId) + .setBeginTime(beginTime) + .setEndTime(endTime); + + for (var excel : GameData.getRogueAreaExcelMap().values()) { + var area = RogueArea.newInstance() + .setAreaId(excel.getRogueAreaID()) + .setRogueAreaStatus(RogueAreaStatus.ROGUE_AREA_STATUS_FIRST_PASS); + + proto.addRogueAreaList(area); + } + + return proto; + } +} diff --git a/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetRogueInfoCsReq.java b/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetRogueInfoCsReq.java index aef7cd9..0e885ab 100644 --- a/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetRogueInfoCsReq.java +++ b/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetRogueInfoCsReq.java @@ -11,7 +11,7 @@ public class HandlerGetRogueInfoCsReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] data) throws Exception { - session.send(new PacketGetRogueInfoScRsp()); + session.send(new PacketGetRogueInfoScRsp(session.getPlayer())); } } diff --git a/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetRogueScoreRewardInfoCsReq.java b/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetRogueScoreRewardInfoCsReq.java index cddecfa..9509bbf 100644 --- a/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetRogueScoreRewardInfoCsReq.java +++ b/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetRogueScoreRewardInfoCsReq.java @@ -11,7 +11,7 @@ public class HandlerGetRogueScoreRewardInfoCsReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] data) throws Exception { - session.send(new PacketGetRogueScoreRewardInfoScRsp()); + session.send(new PacketGetRogueScoreRewardInfoScRsp(session.getPlayer())); } } 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 77c7c4e..ebcf448 100644 --- a/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueInfoScRsp.java +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueInfoScRsp.java @@ -1,65 +1,17 @@ package emu.lunarcore.server.packet.send; -import java.util.concurrent.TimeUnit; - -import emu.lunarcore.data.GameData; -import emu.lunarcore.data.GameDepot; +import emu.lunarcore.game.player.Player; import emu.lunarcore.proto.GetRogueInfoScRspOuterClass.GetRogueInfoScRsp; -import emu.lunarcore.proto.RogueAreaOuterClass.RogueArea; -import emu.lunarcore.proto.RogueAreaStatusOuterClass.RogueAreaStatus; -import emu.lunarcore.proto.RogueInfoDataOuterClass.RogueInfoData; -import emu.lunarcore.proto.RogueInfoOuterClass.RogueInfo; -import emu.lunarcore.proto.RogueScoreRewardInfoOuterClass.RogueScoreRewardInfo; -import emu.lunarcore.proto.RogueSeasonInfoOuterClass.RogueSeasonInfo; import emu.lunarcore.server.packet.BasePacket; import emu.lunarcore.server.packet.CmdId; public class PacketGetRogueInfoScRsp extends BasePacket { - public PacketGetRogueInfoScRsp() { + public PacketGetRogueInfoScRsp(Player player) { super(CmdId.GetRogueInfoScRsp); - 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) - .setHasTakenInitialScore(true); - - var season = RogueSeasonInfo.newInstance() - .setBeginTime(beginTime) - .setRogueSeasonId(seasonId) - .setEndTime(endTime); - - var data = RogueInfoData.newInstance() - .setRogueScoreInfo(score) - .setRogueSeasonInfo(season); - - // Main proto - var proto = GetRogueInfoScRsp.newInstance(); - - RogueInfo info = proto.getMutableRogueInfo() - .setRogueScoreInfo(score) - .setRogueData(data) - .setRogueSeasonId(seasonId) - .setBeginTime(beginTime) - .setEndTime(endTime); - - for (var excel : GameData.getRogueAreaExcelMap().values()) { - var area = RogueArea.newInstance() - .setAreaId(excel.getRogueAreaID()) - .setRogueAreaStatus(RogueAreaStatus.ROGUE_AREA_STATUS_FIRST_PASS); - - info.addRogueAreaList(area); - } + var proto = GetRogueInfoScRsp.newInstance() + .setRogueInfo(player.getRogueManager().toProto()); this.setData(proto); } diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueScoreRewardInfoScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueScoreRewardInfoScRsp.java index eff218e..50a3da1 100644 --- a/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueScoreRewardInfoScRsp.java +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueScoreRewardInfoScRsp.java @@ -1,18 +1,19 @@ package emu.lunarcore.server.packet.send; +import emu.lunarcore.game.player.Player; import emu.lunarcore.proto.GetRogueScoreRewardInfoScRspOuterClass.GetRogueScoreRewardInfoScRsp; import emu.lunarcore.server.packet.BasePacket; import emu.lunarcore.server.packet.CmdId; public class PacketGetRogueScoreRewardInfoScRsp extends BasePacket { - public PacketGetRogueScoreRewardInfoScRsp() { + public PacketGetRogueScoreRewardInfoScRsp(Player player) { super(CmdId.GetRogueScoreRewardInfoScRsp); var data = GetRogueScoreRewardInfoScRsp.newInstance(); data.getMutableScoreRewardInfo() - .setPoolId(1) // TODO un hardcode + .setPoolId(20 + player.getWorldLevel()) // TODO pool ids should not change when world level changes .setPoolRefreshed(true) .setHasTakenInitialScore(true);