public static void OnReadMail(WorldClient client, INetPacketStream packet) { var onReadMail = new ReadMailPacket(packet); var readMailEvent = new ReadMailEventArgs(onReadMail.MailId); client.Player.NotifySystem <MailboxSystem>(readMailEvent); }
private void ReadMail(IPlayerEntity player, ReadMailEventArgs e) { var database = DependencyContainer.Instance.Resolve <IDatabase>(); var mail = database.Mails.Get(x => x.Id == e.MailId && x.ReceiverId == player.PlayerData.Id); if (mail is null) { return; } var unreadMails = database.Mails.Count(x => !x.HasBeenRead && x.ReceiverId == player.PlayerData.Id) - 1; mail.HasBeenRead = true; database.Complete(); WorldPacketFactory.SendRemoveMail(player, mail, RemovedFromMail.Read); if (unreadMails == 0 && player.PlayerData.Mode.HasFlag(ModeType.MODE_MAILBOX)) { player.PlayerData.Mode &= ~ModeType.MODE_MAILBOX; WorldPacketFactory.SendModifyMode(player); } }