示例#1
0
        public static void OnReadMail(WorldClient client, INetPacketStream packet)
        {
            var onReadMail    = new ReadMailPacket(packet);
            var readMailEvent = new ReadMailEventArgs(onReadMail.MailId);

            client.Player.NotifySystem <MailboxSystem>(readMailEvent);
        }
示例#2
0
        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);
            }
        }