mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-17 06:44:35 +01:00
41 lines
1.4 KiB
Java
41 lines
1.4 KiB
Java
package emu.nebula.server.handlers;
|
|
|
|
import emu.nebula.net.NetHandler;
|
|
import emu.nebula.net.NetMsgId;
|
|
import emu.nebula.proto.StarTowerApply.StarTowerApplyReq;
|
|
import emu.nebula.proto.StarTowerApply.StarTowerApplyResp;
|
|
import emu.nebula.net.HandlerId;
|
|
import emu.nebula.GameConstants;
|
|
import emu.nebula.game.tower.StarTowerGame;
|
|
import emu.nebula.net.GameSession;
|
|
|
|
@HandlerId(NetMsgId.star_tower_apply_req)
|
|
public class HandlerStarTowerApplyReq extends NetHandler {
|
|
|
|
@Override
|
|
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
|
// Parse req
|
|
var req = StarTowerApplyReq.parseFrom(message);
|
|
|
|
// Apply to create a star tower instance
|
|
var change = session.getPlayer().getStarTowerManager().apply(req);
|
|
|
|
if (change == null) {
|
|
return session.encodeMsg(NetMsgId.star_tower_apply_failed_ack);
|
|
}
|
|
|
|
// Get star tower game from change info
|
|
var game = (StarTowerGame) change.getExtraData();
|
|
|
|
// Create response
|
|
var rsp = StarTowerApplyResp.newInstance()
|
|
.setLastId(req.getId())
|
|
.setCoinQty(game.getResCount(GameConstants.TOWER_COIN_ITEM_ID))
|
|
.setInfo(game.toProto())
|
|
.setChange(change.toProto());
|
|
|
|
return session.encodeMsg(NetMsgId.star_tower_apply_succeed_ack, rsp);
|
|
}
|
|
|
|
}
|