mirror of
https://github.com/Melledy/Nebula.git
synced 2026-09-20 01:29:54 +02:00
Implement new event
This commit is contained in:
@@ -10,7 +10,7 @@ public class Handler extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Template hanlder
|
||||
// Template handler
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.none);
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package emu.nebula.server.handlers;
|
||||
|
||||
import emu.nebula.net.NetHandler;
|
||||
import emu.nebula.net.NetMsgId;
|
||||
import emu.nebula.proto.ActivityLevelsApply.ActivityLevelsApplyReq;
|
||||
import emu.nebula.net.HandlerId;
|
||||
import emu.nebula.game.activity.type.LevelsActivity;
|
||||
import emu.nebula.net.GameSession;
|
||||
|
||||
@HandlerId(NetMsgId.activity_levels_apply_req)
|
||||
public class HandlerActivityLevelsApplyReq extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Parse req
|
||||
var req = ActivityLevelsApplyReq.parseFrom(message);
|
||||
|
||||
// Get activity
|
||||
var activity = session.getPlayer().getActivityManager().getActivity(LevelsActivity.class, req.getActivityId());
|
||||
|
||||
if (activity == null) {
|
||||
return session.encodeMsg(NetMsgId.activity_levels_apply_failed_ack);
|
||||
}
|
||||
|
||||
// Apply
|
||||
boolean success = activity.apply(req.getLevelId(), req.getBuildId());
|
||||
|
||||
if (success == false) {
|
||||
return session.encodeMsg(NetMsgId.activity_levels_apply_failed_ack);
|
||||
}
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.activity_levels_apply_succeed_ack);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package emu.nebula.server.handlers;
|
||||
|
||||
import emu.nebula.net.NetHandler;
|
||||
import emu.nebula.net.NetMsgId;
|
||||
import emu.nebula.proto.ActivityLevelsSettle.ActivityLevelsSettleReq;
|
||||
import emu.nebula.proto.ActivityLevelsSettle.ActivityLevelsSettleResp;
|
||||
import emu.nebula.net.HandlerId;
|
||||
import emu.nebula.game.activity.type.LevelsActivity;
|
||||
import emu.nebula.game.instance.InstanceSettleData;
|
||||
import emu.nebula.net.GameSession;
|
||||
|
||||
@HandlerId(NetMsgId.activity_levels_settle_req)
|
||||
public class HandlerActivityLevelsSettleReq extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Parse request
|
||||
var req = ActivityLevelsSettleReq.parseFrom(message);
|
||||
|
||||
// Get activity
|
||||
var activity = session.getPlayer().getActivityManager().getActivity(LevelsActivity.class, req.getActivityId());
|
||||
|
||||
if (activity == null || activity.getLevel() == null) {
|
||||
return session.encodeMsg(NetMsgId.activity_levels_settle_failed_ack);
|
||||
}
|
||||
|
||||
// Settle
|
||||
var change = activity.settle(req.getStar());
|
||||
|
||||
if (change == null) {
|
||||
return session.encodeMsg(NetMsgId.activity_levels_settle_failed_ack);
|
||||
}
|
||||
|
||||
var settleData = (InstanceSettleData) change.getExtraData();
|
||||
|
||||
// Handle client events for achievements
|
||||
session.getPlayer().getAchievementManager().handleClientEvents(req.getEvents());
|
||||
|
||||
// Build response
|
||||
var rsp = ActivityLevelsSettleResp.newInstance()
|
||||
.setExp(settleData.getExp())
|
||||
.setChangeInfo(change.toProto());
|
||||
|
||||
// Add reward items
|
||||
if (settleData.getRewards() != null) {
|
||||
settleData.getRewards().toItemTemplateStream().forEach(rsp::addFixed);
|
||||
}
|
||||
if (settleData.getFirstRewards() != null) {
|
||||
settleData.getFirstRewards().toItemTemplateStream().forEach(rsp::addFirst);
|
||||
}
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.activity_levels_settle_succeed_ack, rsp);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package emu.nebula.server.handlers;
|
||||
|
||||
import emu.nebula.net.NetHandler;
|
||||
import emu.nebula.net.NetMsgId;
|
||||
import emu.nebula.proto.ActivityLevelsSweep.ActivityLevelsSweepReq;
|
||||
import emu.nebula.proto.ActivityLevelsSweep.ActivityLevelsSweepResp;
|
||||
import emu.nebula.proto.ActivityLevelsSweep.ActivityLevelsSweepReward;
|
||||
import emu.nebula.net.HandlerId;
|
||||
import emu.nebula.data.GameData;
|
||||
import emu.nebula.game.activity.type.LevelsActivity;
|
||||
import emu.nebula.game.inventory.ItemParamMap;
|
||||
import emu.nebula.net.GameSession;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@HandlerId(NetMsgId.activity_levels_sweep_req)
|
||||
public class HandlerActivityLevelsSweepReq extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Parse request
|
||||
var req = ActivityLevelsSweepReq.parseFrom(message);
|
||||
|
||||
// Get activity
|
||||
var activity = session.getPlayer().getActivityManager().getActivity(LevelsActivity.class, req.getActivityId());
|
||||
|
||||
if (activity == null) {
|
||||
return session.encodeMsg(NetMsgId.activity_levels_sweep_failed_ack);
|
||||
}
|
||||
|
||||
// Get level data
|
||||
var data = GameData.getActivityLevelsLevelDataTable().get(req.getLevelId());
|
||||
if (data == null) {
|
||||
return session.encodeMsg(NetMsgId.activity_levels_sweep_failed_ack);
|
||||
}
|
||||
|
||||
// Settle
|
||||
var change = activity.sweep(data, req.getTimes());
|
||||
|
||||
if (change == null) {
|
||||
return session.encodeMsg(NetMsgId.activity_levels_sweep_failed_ack);
|
||||
}
|
||||
|
||||
// Handle client events for achievements
|
||||
session.getPlayer().getAchievementManager().handleClientEvents(req.getEvents());
|
||||
|
||||
// Build response
|
||||
var rsp = ActivityLevelsSweepResp.newInstance()
|
||||
.setChangeInfo(change.toProto());
|
||||
|
||||
// Add reward list to response
|
||||
if (change.getExtraData() != null) {
|
||||
@SuppressWarnings("unchecked")
|
||||
var list = (List<ItemParamMap>) change.getExtraData();
|
||||
|
||||
for (var rewards : list) {
|
||||
var reward = ActivityLevelsSweepReward.newInstance()
|
||||
.setExp(data.getEnergyConsume());
|
||||
|
||||
rewards.toItemTemplateStream().forEach(reward::addAwardItems);
|
||||
|
||||
rsp.addRewards(reward);
|
||||
}
|
||||
}
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.activity_levels_sweep_succeed_ack, rsp);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package emu.nebula.server.handlers;
|
||||
|
||||
import emu.nebula.net.NetHandler;
|
||||
import emu.nebula.net.NetMsgId;
|
||||
import emu.nebula.proto.ActivityShopPurchase.ActivityShopPurchaseReq;
|
||||
import emu.nebula.proto.ActivityShopPurchase.ActivityShopPurchaseResp;
|
||||
import emu.nebula.net.HandlerId;
|
||||
import emu.nebula.game.activity.type.ShopActivity;
|
||||
import emu.nebula.game.activity.type.ShopActivity.ActivityShopInfo;
|
||||
import emu.nebula.net.GameSession;
|
||||
|
||||
@HandlerId(NetMsgId.activity_shop_purchase_req)
|
||||
public class HandlerActivityShopPurchaseReq extends NetHandler {
|
||||
|
||||
@Override
|
||||
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
||||
// Parse request
|
||||
var req = ActivityShopPurchaseReq.parseFrom(message);
|
||||
|
||||
// Get activity
|
||||
var activity = session.getPlayer().getActivityManager().getActivity(ShopActivity.class, req.getActivityId());
|
||||
|
||||
if (activity == null) {
|
||||
return session.encodeMsg(NetMsgId.activity_shop_purchase_failed_ack);
|
||||
}
|
||||
|
||||
// Buy
|
||||
var change = activity.buy(req.getShopId(), req.getGoodsId(), req.getNumber());
|
||||
|
||||
if (change == null) {
|
||||
return session.encodeMsg(NetMsgId.activity_shop_purchase_failed_ack);
|
||||
}
|
||||
|
||||
// Build response
|
||||
var rsp = ActivityShopPurchaseResp.newInstance()
|
||||
.setChange(change.toProto())
|
||||
.setPurchasedNumber(req.getNumber());
|
||||
|
||||
// Set shop info
|
||||
var shop = (ActivityShopInfo) change.getExtraData();
|
||||
var shopInfo = shop.toProto()
|
||||
.setId(req.getShopId());
|
||||
|
||||
rsp.setShop(shopInfo);
|
||||
|
||||
// Encode and send
|
||||
return session.encodeMsg(NetMsgId.activity_shop_purchase_succeed_ack, rsp);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -28,7 +28,7 @@ public class HandlerCharGemInstanceSettleReq extends NetHandler {
|
||||
var req = CharGemInstanceSettleReq.parseFrom(message);
|
||||
|
||||
// Settle instance
|
||||
var changes = player.getInstanceManager().settleInstance(
|
||||
var change = player.getInstanceManager().settleInstance(
|
||||
data,
|
||||
QuestCondition.CharGemInstanceClearTotal,
|
||||
player.getProgress().getCharGemLog(),
|
||||
@@ -36,7 +36,7 @@ public class HandlerCharGemInstanceSettleReq extends NetHandler {
|
||||
req.getStar()
|
||||
);
|
||||
|
||||
var settleData = (InstanceSettleData) changes.getExtraData();
|
||||
var settleData = (InstanceSettleData) change.getExtraData();
|
||||
|
||||
// Handle client events for achievements
|
||||
session.getPlayer().getAchievementManager().handleClientEvents(req.getEvents());
|
||||
@@ -45,7 +45,7 @@ public class HandlerCharGemInstanceSettleReq extends NetHandler {
|
||||
var rsp = CharGemInstanceSettleResp.newInstance()
|
||||
.setExp(settleData.getExp())
|
||||
.setThreeStar(req.getStar() == 7)
|
||||
.setChange(changes.toProto());
|
||||
.setChange(change.toProto());
|
||||
|
||||
// Add reward items
|
||||
if (settleData.getRewards() != null) {
|
||||
|
||||
Reference in New Issue
Block a user