Refactor rogue infos and unhardcode rogue pool ids

This commit is contained in:
Melledy
2023-10-20 03:06:16 -07:00
parent 6990e445b7
commit ca5fef3f5b
6 changed files with 77 additions and 57 deletions

View File

@@ -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,6 +85,7 @@ 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;
@@ -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

View File

@@ -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;
}
}

View File

@@ -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()));
}
}

View File

@@ -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()));
}
}

View File

@@ -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);
}

View File

@@ -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);