Implement boss blitz server leaderboard

This commit is contained in:
Melledy
2025-11-13 07:52:38 -08:00
parent c012742d30
commit 4c66a494f2
7 changed files with 311 additions and 3 deletions

View File

@@ -16,6 +16,29 @@ public class HandlerScoreBossRankReq extends NetHandler {
var rsp = ScoreBossRankInfo.newInstance()
.setLastRefreshTime(Nebula.getCurrentTime());
// Get self
var self = session.getPlayer().getScoreBossManager().getRanking();
if (self != null) {
rsp.setSelf(self.toProto());
}
// Get ranking
var ranking = Nebula.getGameContext().getScoreBossModule().getRanking();
for (var entry : ranking) {
// Check self
if (self != null && self.getPlayerUid() == entry.getId()) {
rsp.getMutableSelf().setRank(entry.getRank());
}
// Add to ranking
rsp.addRank(entry);
}
// Set total
rsp.setTotal(ranking.size());
// Encode and send
return session.encodeMsg(NetMsgId.score_boss_rank_succeed_ack, rsp);
}

View File

@@ -16,7 +16,11 @@ public class HandlerScoreBossSettleReq extends NetHandler {
var req = ScoreBossSettleReq.parseFrom(message);
// Settle
session.getPlayer().getScoreBossManager().settle(req.getStar(), req.getScore());
boolean success = session.getPlayer().getScoreBossManager().settle(req.getStar(), req.getScore());
if (success == false) {
return session.encodeMsg(NetMsgId.score_boss_settle_failed_ack);
}
// Build response
var rsp = ScoreBossSettleResp.newInstance();