mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
38 lines
1.4 KiB
C#
38 lines
1.4 KiB
C#
using EggLink.DanhengServer.Data;
|
|
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Player;
|
|
using EggLink.DanhengServer.Kcp;
|
|
using EggLink.DanhengServer.Proto;
|
|
|
|
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Player;
|
|
|
|
[Opcode(CmdIds.GetLevelRewardCsReq)]
|
|
public class HandlerGetLevelRewardCsReq : Handler
|
|
{
|
|
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
|
{
|
|
var req = GetLevelRewardCsReq.Parser.ParseFrom(data);
|
|
|
|
var player = connection.Player!;
|
|
if (player.Data.TakenLevelReward.Contains((int)req.Level))
|
|
{
|
|
await connection.SendPacket(new PacketGetLevelRewardScRsp(Retcode.RetLevelRewardHasTaken));
|
|
return;
|
|
}
|
|
|
|
if (player.Data.Level < req.Level)
|
|
{
|
|
await connection.SendPacket(new PacketGetLevelRewardScRsp(Retcode.RetLevelRewardLevelError));
|
|
return;
|
|
}
|
|
|
|
if (!GameData.PlayerLevelConfigData.TryGetValue((int)req.Level, out var levelExcel))
|
|
{
|
|
await connection.SendPacket(new PacketGetLevelRewardScRsp(Retcode.RetLevelRewardLevelError));
|
|
return;
|
|
}
|
|
|
|
player.Data.TakenLevelReward.Add((int)req.Level);
|
|
var rewards = await player.InventoryManager!.HandleReward(levelExcel.LevelRewardID);
|
|
await connection.SendPacket(new PacketGetLevelRewardScRsp(req.Level, rewards));
|
|
}
|
|
} |