server-master/srcs/_plugins/WingsEmu.Plugins.PacketHandling/Game/Basic/PstPacketHandler.cs
2026-02-10 18:21:30 +01:00

49 lines
No EOL
1.5 KiB
C#

using System;
using System.Threading.Tasks;
using WingsEmu.Game.Mails.Events;
using WingsEmu.Game.Networking;
using WingsEmu.Packets.ClientPackets;
namespace WingsEmu.Plugins.PacketHandling.Game.Basic;
public class PstPacketHandler : GenericGamePacketHandlerBase<PstPacket>
{
protected override async Task HandlePacketAsync(IClientSession session, PstPacket pstPacket)
{
if (!Enum.TryParse(pstPacket.Argument.ToString(), out PstPacketType type))
{
return;
}
bool isSenderCopy = pstPacket.Type == 2;
switch (type)
{
case PstPacketType.SendNote:
string data = pstPacket.Data;
string receiverName = pstPacket.Receiver;
if (string.IsNullOrEmpty(data))
{
return;
}
if (string.IsNullOrEmpty(receiverName))
{
return;
}
string[] split = data.Split(' ');
string title = split[0];
string message = split[1];
await session.EmitEventAsync(new NoteCreateEvent(receiverName, title, message));
break;
case PstPacketType.RemoveNote:
await session.EmitEventAsync(new NoteRemoveEvent(pstPacket.Id, isSenderCopy));
break;
case PstPacketType.ReadNote:
await session.EmitEventAsync(new NoteOpenEvent(pstPacket.Id, isSenderCopy));
break;
}
}
}