Files
Nebula/src/main/java/emu/nebula/server/handlers/HandlerCharDatingBranchASelectReq.java
2025-11-25 22:33:25 -08:00

44 lines
1.5 KiB
Java

package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.CharDatingBranchASelect.CharDatingBranchASelectReq;
import emu.nebula.proto.CharDatingBranchASelect.CharDatingBranchASelectResp;
import emu.nebula.util.Utils;
import emu.nebula.net.HandlerId;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.char_dating_branch_a_select_req)
public class HandlerCharDatingBranchASelectReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
// Parse request
var req = CharDatingBranchASelectReq.parseFrom(message);
// Get dating game
var game = session.getPlayer().getDatingManager().getGame();
if (game == null) {
return session.encodeMsg(NetMsgId.char_dating_branch_a_select_failed_ack);
}
// Select branch A
game.selectDatingBranchA(req.getOptionId());
// Build response
var rsp = CharDatingBranchASelectResp.newInstance()
.addAllBranchBOptionIds(game.getBranchOptionsB());
// Add random events
for (var events : game.getLandmark().getLandmarkEvents().values()) {
var event = Utils.randomElement(events);
rsp.addLandmarkEventIds(event.getId());
}
// Encode and send
return session.encodeMsg(NetMsgId.char_dating_branch_a_select_succeed_ack, rsp);
}
}