mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-25 18:54:36 +01:00
Implement cataclysm survivor (basic)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
package emu.nebula.server.handlers;
|
||||
|
||||
import emu.nebula.net.NetHandler;
|
||||
import emu.nebula.net.NetMsgId;
|
||||
import emu.nebula.proto.VampireSurvivorApply.VampireSurvivorApplyReq;
|
||||
import emu.nebula.proto.VampireSurvivorApply.VampireSurvivorApplyResp;
|
||||
import emu.nebula.net.HandlerId;
|
||||
import emu.nebula.net.GameSession;
|
||||
|
||||
@HandlerId(NetMsgId.vampire_survivor_apply_req)
|
||||
public class HandlerVampireSurvivorApplyReq extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Parse request
|
||||
var req = VampireSurvivorApplyReq.parseFrom(message);
|
||||
|
||||
// Apply
|
||||
var game = session.getPlayer().getVampireSurvivorManager().apply(req.getId());
|
||||
|
||||
if (game == null) {
|
||||
return session.encodeMsg(NetMsgId.vampire_survivor_apply_failed_ack);
|
||||
}
|
||||
|
||||
// Build response
|
||||
var rsp = VampireSurvivorApplyResp.newInstance()
|
||||
.setReward(game.getRewardProto());
|
||||
|
||||
rsp.getMutableSelect();
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.vampire_survivor_apply_succeed_ack, rsp);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package emu.nebula.server.handlers;
|
||||
|
||||
import emu.nebula.net.NetHandler;
|
||||
import emu.nebula.net.NetMsgId;
|
||||
import emu.nebula.proto.VampireSurvivorRewardSelect.VampireSurvivorRewardSelectReq;
|
||||
import emu.nebula.proto.VampireSurvivorRewardSelect.VampireSurvivorRewardSelectResp;
|
||||
import emu.nebula.net.HandlerId;
|
||||
import emu.nebula.net.GameSession;
|
||||
|
||||
@HandlerId(NetMsgId.vampire_survivor_reward_select_req)
|
||||
public class HandlerVampireSurvivorRewardSelectReq extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Parse
|
||||
var req = VampireSurvivorRewardSelectReq.parseFrom(message);
|
||||
|
||||
// Get game
|
||||
var game = session.getPlayer().getVampireSurvivorManager().getGame();
|
||||
|
||||
if (game == null) {
|
||||
session.encodeMsg(NetMsgId.vampire_survivor_reward_select_failed_ack);
|
||||
}
|
||||
|
||||
// Select
|
||||
int cardId = game.selectReward(req.getIndex(), req.getReRoll());
|
||||
|
||||
if (cardId <= 0) {
|
||||
session.encodeMsg(NetMsgId.vampire_survivor_reward_select_failed_ack);
|
||||
}
|
||||
|
||||
// Build response
|
||||
var rsp = VampireSurvivorRewardSelectResp.newInstance();
|
||||
|
||||
rsp.getMutableResp()
|
||||
.setFateCardId(cardId)
|
||||
.setReward(game.getRewardProto());
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.vampire_survivor_reward_select_succeed_ack, rsp);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package emu.nebula.server.handlers;
|
||||
|
||||
import emu.nebula.net.NetHandler;
|
||||
import emu.nebula.net.NetMsgId;
|
||||
import emu.nebula.proto.VampireSurvivorSettle.VampireSurvivorAreaInfo;
|
||||
import emu.nebula.proto.VampireSurvivorSettle.VampireSurvivorSettleReq;
|
||||
import emu.nebula.proto.VampireSurvivorSettle.VampireSurvivorSettleResp;
|
||||
import emu.nebula.net.HandlerId;
|
||||
import emu.nebula.net.GameSession;
|
||||
|
||||
@HandlerId(NetMsgId.vampire_survivor_settle_req)
|
||||
public class HandlerVampireSurvivorSettleReq extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Parse request
|
||||
var req = VampireSurvivorSettleReq.parseFrom(message);
|
||||
|
||||
// Sanity check
|
||||
var game = session.getPlayer().getVampireSurvivorManager().getGame();
|
||||
|
||||
if (game == null) {
|
||||
session.encodeMsg(NetMsgId.vampire_survivor_settle_failed_ack);
|
||||
}
|
||||
|
||||
// Calculate victory + score
|
||||
boolean victory = !req.getDefeat();
|
||||
int score = 0;
|
||||
|
||||
// Settle
|
||||
session.getPlayer().getVampireSurvivorManager().settle(victory, score);
|
||||
|
||||
// Build response
|
||||
var rsp = VampireSurvivorSettleResp.newInstance();
|
||||
|
||||
if (victory) {
|
||||
var areaInfo = VampireSurvivorAreaInfo.newInstance()
|
||||
.setBossTime(1)
|
||||
.setScore(score);
|
||||
|
||||
// TODO
|
||||
for (int i : req.getKillCount()) {
|
||||
areaInfo.addKillCount(i);
|
||||
areaInfo.addKillScore(0);
|
||||
}
|
||||
|
||||
rsp.getMutableVictory()
|
||||
.setFinalScore(score)
|
||||
.addInfos(areaInfo);
|
||||
} else {
|
||||
rsp.getMutableDefeat()
|
||||
.setFinalScore(score);
|
||||
}
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.vampire_survivor_settle_succeed_ack, rsp);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package emu.nebula.server.handlers;
|
||||
|
||||
import emu.nebula.net.NetHandler;
|
||||
import emu.nebula.net.NetMsgId;
|
||||
import emu.nebula.proto.VampireTalentDetail.VampireTalentDetailResp;
|
||||
import emu.nebula.net.HandlerId;
|
||||
import emu.nebula.net.GameSession;
|
||||
|
||||
@HandlerId(NetMsgId.vampire_talent_detail_req)
|
||||
public class HandlerVampireTalentDetailReq extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Build response
|
||||
var rsp = VampireTalentDetailResp.newInstance()
|
||||
.setNodes(new byte[8]);
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.vampire_talent_detail_succeed_ack, rsp);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user