Implement saving tower records

This commit is contained in:
Melledy
2025-10-28 05:47:01 -07:00
parent 276d9f9002
commit d89acec89c
7 changed files with 207 additions and 36 deletions

View File

@@ -2,6 +2,7 @@ package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.StarTowerBuildBriefListGet.StarTowerBuildBriefListGetResp;
import emu.nebula.net.HandlerId;
import emu.nebula.net.GameSession;
@@ -10,7 +11,17 @@ public class HandlerStarTowerBuildBriefListGetReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
return this.encodeMsg(NetMsgId.star_tower_build_brief_list_get_succeed_ack);
// Build response
var rsp = StarTowerBuildBriefListGetResp.newInstance();
// Add star tower builds
var builds = session.getPlayer().getStarTowerManager().getBuilds().values();
for (var build : builds) {
rsp.addBriefs(build.toBriefProto());
}
// Finish
return this.encodeMsg(NetMsgId.star_tower_build_brief_list_get_succeed_ack, rsp);
}
}

View File

@@ -0,0 +1,33 @@
package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.StarTowerBuildDetailGet.StarTowerBuildDetailGetReq;
import emu.nebula.proto.StarTowerBuildDetailGet.StarTowerBuildDetailGetResp;
import emu.nebula.net.HandlerId;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.star_tower_build_detail_get_req)
public class HandlerStarTowerBuildDetailGetReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
// Parse request
var req = StarTowerBuildDetailGetReq.parseFrom(message);
// Get build
int buildId = (int) req.getBuildId();
var build = session.getPlayer().getStarTowerManager().getBuilds().get(buildId);
if (build == null) {
return this.encodeMsg(NetMsgId.star_tower_build_detail_get_failed_ack);
}
// Build response
var rsp = StarTowerBuildDetailGetResp.newInstance()
.setDetail(build.toDetailProto());
return this.encodeMsg(NetMsgId.star_tower_build_detail_get_succeed_ack, rsp);
}
}

View File

@@ -3,6 +3,7 @@ package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.StarTowerBuildWhetherSave.StarTowerBuildWhetherSaveReq;
import emu.nebula.proto.StarTowerBuildWhetherSave.StarTowerBuildWhetherSaveResp;
import emu.nebula.net.HandlerId;
import emu.nebula.net.GameSession;
@@ -11,10 +12,24 @@ public class HandlerStarTowerBuildWhetherSaveReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
// Parse request
var req = StarTowerBuildWhetherSaveReq.parseFrom(message);
// TODO
return this.encodeMsg(NetMsgId.star_tower_build_whether_save_succeed_ack);
// Save build
boolean result = session.getPlayer().getStarTowerManager().saveBuild(
req.getDelete(),
req.getBuildName(),
req.getLock()
);
if (!result) {
return this.encodeMsg(NetMsgId.star_tower_build_whether_save_failed_ack);
}
// Build response
var rsp = StarTowerBuildWhetherSaveResp.newInstance();
return this.encodeMsg(NetMsgId.star_tower_build_whether_save_succeed_ack, rsp);
}
}