mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-14 14:24:37 +01:00
Refactor rogue infos and unhardcode rogue pool ids
This commit is contained in:
@@ -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
|
||||
|
||||
64
src/main/java/emu/lunarcore/game/rogue/RogueManager.java
Normal file
64
src/main/java/emu/lunarcore/game/rogue/RogueManager.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user