mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-03 04:36:03 +08:00
47 lines
1.7 KiB
C#
47 lines
1.7 KiB
C#
using EggLink.DanhengServer.GameServer.Game.RogueTourn.Scene;
|
|
using EggLink.DanhengServer.GameServer.Game.Scene.Entity;
|
|
using EggLink.DanhengServer.GameServer.Server.Packet.Send.RogueCommon;
|
|
using EggLink.DanhengServer.Kcp;
|
|
using EggLink.DanhengServer.Proto;
|
|
|
|
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.RogueCommon;
|
|
|
|
[Opcode(CmdIds.RogueWorkbenchHandleFuncCsReq)]
|
|
public class HandlerRogueWorkbenchHandleFuncCsReq : Handler
|
|
{
|
|
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
|
{
|
|
var req = RogueWorkbenchHandleFuncCsReq.Parser.ParseFrom(data);
|
|
var player = connection.Player!;
|
|
|
|
IGameEntity? entity = null;
|
|
player.SceneInstance?.Entities.TryGetValue((int)req.PropEntityId, out entity);
|
|
if (entity is not RogueWorkbenchProp prop)
|
|
{
|
|
await connection.SendPacket(new PacketRogueWorkbenchHandleFuncScRsp(Retcode.RetSceneEntityNotExist,
|
|
req.FuncId, null));
|
|
return;
|
|
}
|
|
|
|
var func = prop.WorkbenchFuncs.Find(x => x.FuncId == req.FuncId);
|
|
if (func == null)
|
|
{
|
|
await connection.SendPacket(
|
|
new PacketRogueWorkbenchHandleFuncScRsp(Retcode.RetFail, req.FuncId, null));
|
|
return;
|
|
}
|
|
|
|
var instance = player.RogueTournManager?.RogueTournInstance;
|
|
if (instance == null)
|
|
{
|
|
await connection.SendPacket(new PacketRogueWorkbenchHandleFuncScRsp(Retcode.RetTournRogueStatusMismatch,
|
|
req.FuncId, null));
|
|
return;
|
|
}
|
|
|
|
await instance.HandleFunc(func, req.WorkbenchContent);
|
|
|
|
await connection.SendPacket(
|
|
new PacketRogueWorkbenchHandleFuncScRsp(Retcode.RetSucc, req.FuncId, func));
|
|
}
|
|
} |