mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-15 05:44:36 +01:00
Implement saving tower records
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user