First push: build.zig.zon First push: config.json First push: dispatch/build.zig First push: dispatch/build.zig.zon First push: dispatch/src/authentication.zig First push: dispatch/src/dispatch.zig First push: dispatch/src/hotfix.zig First push: dispatch/src/main.zig First push: gameserver/build.zig First push: gameserver/build.zig.zon First push: gameserver/src/Packet.zig First push: gameserver/src/Session.zig First push: gameserver/src/command.zig First push: gameserver/src/commands/help.zig First push: gameserver/src/commands/refill.zig First push: gameserver/src/commands/sync.zig First push: gameserver/src/commands/tp.zig First push: gameserver/src/commands/unstuck.zig First push: gameserver/src/commands/value.zig First push: gameserver/src/data.zig First push: gameserver/src/handlers.zig First push: gameserver/src/main.zig First push: gameserver/src/manager/battle_mgr.zig First push: gameserver/src/manager/lineup_mgr.zig First push: gameserver/src/manager/multipath_mgr.zig First push: gameserver/src/manager/scene_mgr.zig First push: gameserver/src/network.zig First push: gameserver/src/services/avatar.zig First push: gameserver/src/services/battle.zig First push: gameserver/src/services/challenge.zig First push: gameserver/src/services/chat.zig First push: gameserver/src/services/config.zig First push: gameserver/src/services/events.zig First push: gameserver/src/services/gacha.zig First push: gameserver/src/services/item.zig First push: gameserver/src/services/lineup.zig First push: gameserver/src/services/login.zig First push: gameserver/src/services/mail.zig First push: gameserver/src/services/misc copy.zig First push: gameserver/src/services/misc.zig First push: gameserver/src/services/mission.zig First push: gameserver/src/services/multipath.zig First push: gameserver/src/services/pet.zig First push: gameserver/src/services/profile.zig First push: gameserver/src/services/res_config.zig First push: gameserver/src/services/scene.zig First push: hotfix.json First push: protocol/build.zig First push: protocol/build.zig.zon First push: protocol/src/protocol.pb.zig First push: protocol/src/root.zig First push: resources/ChallengeMazeConfig.json First push: resources/MapEntrance.json First push: resources/MazePlane.json First push: resources/res.json
91 lines
4.1 KiB
Zig
91 lines
4.1 KiB
Zig
const std = @import("std");
|
|
const protocol = @import("protocol");
|
|
const Session = @import("../Session.zig");
|
|
const Packet = @import("../Packet.zig");
|
|
const Config = @import("config.zig");
|
|
const Data = @import("../data.zig");
|
|
const BattleManager = @import("../manager/battle_mgr.zig").BattleManager;
|
|
|
|
const ArrayList = std.ArrayList;
|
|
const Allocator = std.mem.Allocator;
|
|
const CmdID = protocol.CmdID;
|
|
|
|
pub fn onStartCocoonStage(session: *Session, packet: *const Packet, allocator: Allocator) !void {
|
|
const req = try packet.getProto(protocol.StartCocoonStageCsReq, allocator);
|
|
var battle_mgr = BattleManager.init(allocator);
|
|
const battle = try battle_mgr.createBattle();
|
|
try session.send(CmdID.CmdStartCocoonStageScRsp, protocol.StartCocoonStageScRsp{
|
|
.retcode = 0,
|
|
.cocoon_id = req.cocoon_id,
|
|
.prop_entity_id = req.prop_entity_id,
|
|
.wave = req.wave,
|
|
.battle_info = battle,
|
|
});
|
|
}
|
|
pub fn onQuickStartCocoonStage(session: *Session, packet: *const Packet, allocator: Allocator) !void {
|
|
const req = try packet.getProto(protocol.QuickStartCocoonStageCsReq, allocator);
|
|
var battle_mgr = BattleManager.init(allocator);
|
|
const battle = try battle_mgr.createBattle();
|
|
try session.send(CmdID.CmdQuickStartCocoonStageScRsp, protocol.QuickStartCocoonStageScRsp{
|
|
.retcode = 0,
|
|
.cocoon_id = req.cocoon_id,
|
|
.wave = req.wave,
|
|
.battle_info = battle,
|
|
});
|
|
}
|
|
pub fn onQuickStartFarmElement(session: *Session, packet: *const Packet, allocator: Allocator) !void {
|
|
const req = try packet.getProto(protocol.QuickStartFarmElementCsReq, allocator);
|
|
var battle_mgr = BattleManager.init(allocator);
|
|
const battle = try battle_mgr.createBattle();
|
|
try session.send(CmdID.CmdQuickStartFarmElementScRsp, protocol.QuickStartFarmElementScRsp{
|
|
.retcode = 0,
|
|
.world_level = req.world_level,
|
|
.JDANOKNHNHL = req.JDANOKNHNHL,
|
|
.battle_info = battle,
|
|
});
|
|
}
|
|
pub fn onStartBattleCollege(session: *Session, packet: *const Packet, allocator: Allocator) !void {
|
|
const req = try packet.getProto(protocol.StartBattleCollegeCsReq, allocator);
|
|
var battle_mgr = BattleManager.init(allocator);
|
|
const battle = try battle_mgr.createBattle();
|
|
try session.send(CmdID.CmdStartBattleCollegeScRsp, protocol.StartBattleCollegeScRsp{
|
|
.retcode = 0,
|
|
.id = req.id,
|
|
.battle_info = battle,
|
|
});
|
|
}
|
|
pub fn onSceneCastSkill(session: *Session, packet: *const Packet, allocator: Allocator) !void {
|
|
var battle_mgr = BattleManager.init(allocator);
|
|
const battle = try battle_mgr.createBattle();
|
|
|
|
const req = try packet.getProto(protocol.SceneCastSkillCsReq, allocator);
|
|
var monster_battle_info_list = ArrayList(protocol.HitMonsterBattleInfo).init(allocator);
|
|
try monster_battle_info_list.appendSlice(&[_]protocol.HitMonsterBattleInfo{
|
|
.{
|
|
.target_monster_entity_id = 0,
|
|
.monster_battle_type = protocol.MonsterBattleType.MONSTER_BATTLE_TYPE_TRIGGER_BATTLE,
|
|
},
|
|
});
|
|
try session.send(CmdID.CmdSceneCastSkillScRsp, protocol.SceneCastSkillScRsp{
|
|
.retcode = 0,
|
|
.cast_entity_id = req.cast_entity_id,
|
|
.monster_battle_info = monster_battle_info_list,
|
|
.battle_info = if (req.assist_monster_entity_id_list.items.len > 0 or (req.attacked_by_entity_id >= 1 and req.attacked_by_entity_id <= 99)) battle else null,
|
|
});
|
|
}
|
|
|
|
pub fn onPVEBattleResult(session: *Session, packet: *const Packet, allocator: Allocator) !void {
|
|
const req = try packet.getProto(protocol.PVEBattleResultCsReq, allocator);
|
|
var rsp = protocol.PVEBattleResultScRsp.init(allocator);
|
|
rsp.battle_id = req.battle_id;
|
|
rsp.end_status = req.end_status;
|
|
try session.send(CmdID.CmdPVEBattleResultScRsp, rsp);
|
|
}
|
|
|
|
pub fn onSceneCastSkillCostMp(session: *Session, packet: *const Packet, allocator: Allocator) !void {
|
|
const req = try packet.getProto(protocol.SceneCastSkillCostMpCsReq, allocator);
|
|
try session.send(CmdID.CmdSceneCastSkillCostMpScRsp, protocol.SceneCastSkillCostMpScRsp{
|
|
.retcode = 0,
|
|
.cast_entity_id = req.cast_entity_id,
|
|
});
|
|
}
|