mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-15 06:45:04 +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.gacha.PlayerGachaInfo;
|
||||||
import emu.lunarcore.game.inventory.Inventory;
|
import emu.lunarcore.game.inventory.Inventory;
|
||||||
import emu.lunarcore.game.mail.Mailbox;
|
import emu.lunarcore.game.mail.Mailbox;
|
||||||
|
import emu.lunarcore.game.rogue.RogueManager;
|
||||||
import emu.lunarcore.game.scene.Scene;
|
import emu.lunarcore.game.scene.Scene;
|
||||||
import emu.lunarcore.game.scene.entity.EntityProp;
|
import emu.lunarcore.game.scene.entity.EntityProp;
|
||||||
import emu.lunarcore.game.scene.entity.GameEntity;
|
import emu.lunarcore.game.scene.entity.GameEntity;
|
||||||
@@ -84,6 +85,7 @@ public class Player {
|
|||||||
private transient final ChatManager chatManager;
|
private transient final ChatManager chatManager;
|
||||||
private transient final Mailbox mailbox;
|
private transient final Mailbox mailbox;
|
||||||
private transient final ChallengeManager challengeManager;
|
private transient final ChallengeManager challengeManager;
|
||||||
|
private transient final RogueManager rogueManager;
|
||||||
|
|
||||||
// Database persistent data
|
// Database persistent data
|
||||||
private LineupManager lineupManager;
|
private LineupManager lineupManager;
|
||||||
@@ -105,6 +107,7 @@ public class Player {
|
|||||||
this.chatManager = new ChatManager(this);
|
this.chatManager = new ChatManager(this);
|
||||||
this.mailbox = new Mailbox(this);
|
this.mailbox = new Mailbox(this);
|
||||||
this.challengeManager = new ChallengeManager(this);
|
this.challengeManager = new ChallengeManager(this);
|
||||||
|
this.rogueManager = new RogueManager(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called when player is created
|
// 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
|
@Override
|
||||||
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
|
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
|
@Override
|
||||||
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
|
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;
|
package emu.lunarcore.server.packet.send;
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import emu.lunarcore.game.player.Player;
|
||||||
|
|
||||||
import emu.lunarcore.data.GameData;
|
|
||||||
import emu.lunarcore.data.GameDepot;
|
|
||||||
import emu.lunarcore.proto.GetRogueInfoScRspOuterClass.GetRogueInfoScRsp;
|
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.BasePacket;
|
||||||
import emu.lunarcore.server.packet.CmdId;
|
import emu.lunarcore.server.packet.CmdId;
|
||||||
|
|
||||||
public class PacketGetRogueInfoScRsp extends BasePacket {
|
public class PacketGetRogueInfoScRsp extends BasePacket {
|
||||||
|
|
||||||
public PacketGetRogueInfoScRsp() {
|
public PacketGetRogueInfoScRsp(Player player) {
|
||||||
super(CmdId.GetRogueInfoScRsp);
|
super(CmdId.GetRogueInfoScRsp);
|
||||||
|
|
||||||
var schedule = GameDepot.getCurrentRogueSchedule();
|
var proto = GetRogueInfoScRsp.newInstance()
|
||||||
|
.setRogueInfo(player.getRogueManager().toProto());
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setData(proto);
|
this.setData(proto);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
package emu.lunarcore.server.packet.send;
|
package emu.lunarcore.server.packet.send;
|
||||||
|
|
||||||
|
import emu.lunarcore.game.player.Player;
|
||||||
import emu.lunarcore.proto.GetRogueScoreRewardInfoScRspOuterClass.GetRogueScoreRewardInfoScRsp;
|
import emu.lunarcore.proto.GetRogueScoreRewardInfoScRspOuterClass.GetRogueScoreRewardInfoScRsp;
|
||||||
import emu.lunarcore.server.packet.BasePacket;
|
import emu.lunarcore.server.packet.BasePacket;
|
||||||
import emu.lunarcore.server.packet.CmdId;
|
import emu.lunarcore.server.packet.CmdId;
|
||||||
|
|
||||||
public class PacketGetRogueScoreRewardInfoScRsp extends BasePacket {
|
public class PacketGetRogueScoreRewardInfoScRsp extends BasePacket {
|
||||||
|
|
||||||
public PacketGetRogueScoreRewardInfoScRsp() {
|
public PacketGetRogueScoreRewardInfoScRsp(Player player) {
|
||||||
super(CmdId.GetRogueScoreRewardInfoScRsp);
|
super(CmdId.GetRogueScoreRewardInfoScRsp);
|
||||||
|
|
||||||
var data = GetRogueScoreRewardInfoScRsp.newInstance();
|
var data = GetRogueScoreRewardInfoScRsp.newInstance();
|
||||||
|
|
||||||
data.getMutableScoreRewardInfo()
|
data.getMutableScoreRewardInfo()
|
||||||
.setPoolId(1) // TODO un hardcode
|
.setPoolId(20 + player.getWorldLevel()) // TODO pool ids should not change when world level changes
|
||||||
.setPoolRefreshed(true)
|
.setPoolRefreshed(true)
|
||||||
.setHasTakenInitialScore(true);
|
.setHasTakenInitialScore(true);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user