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

55 lines
No EOL
1.6 KiB
C#

using System.Linq;
using System.Threading.Tasks;
using WingsEmu.Game.Characters;
using WingsEmu.Game.Chat;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Groups;
using WingsEmu.Game.Networking;
using WingsEmu.Packets.ClientPackets;
using WingsEmu.Packets.Enums.Chat;
using ChatType = WingsEmu.Game._playerActionLogs.ChatType;
namespace WingsEmu.Plugins.PacketHandling.Game.Group;
public class GroupSayPacketHandler : GenericGamePacketHandlerBase<GroupSayPacket>
{
protected override async Task HandlePacketAsync(IClientSession session, GroupSayPacket groupSayPacket)
{
if (string.IsNullOrEmpty(groupSayPacket.Message))
{
return;
}
if (session.PlayerEntity.IsInRaidParty)
{
foreach (IClientSession target in session.PlayerEntity.Raid.Members)
{
session.SendSpeakToTarget(target, groupSayPacket.Message, SpeakType.Group);
}
await session.EmitEventAsync(new ChatGenericEvent
{
Message = groupSayPacket.Message,
ChatType = ChatType.GroupChat
});
return;
}
if (!session.PlayerEntity.IsInGroup())
{
return;
}
PlayerGroup group = session.PlayerEntity.GetGroup();
foreach (IPlayerEntity member in group.Members.ToArray())
{
session.SendSpeakToTarget(member.Session, groupSayPacket.Message, SpeakType.Group);
}
await session.EmitEventAsync(new ChatGenericEvent
{
Message = groupSayPacket.Message,
ChatType = ChatType.GroupChat
});
}
}