aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Mails/Mail.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-07-30 20:38:04 +0200
committerShauren <shauren.trinity@gmail.com>2020-07-30 20:38:04 +0200
commit57eaab80d9e1f6f25274f376da16e1f2f67ab4bc (patch)
treed0031051d676b956283fddc191bbfea9fe866572 /src/server/game/Mails/Mail.cpp
parente94350fcc31cedb5a8140a71e2b2a03ab4125927 (diff)
Core/Mail: Load mails at login instead of on demand when queried by packets (logging in always sends one of the packets that cause mail loading anyway)
Diffstat (limited to 'src/server/game/Mails/Mail.cpp')
-rw-r--r--src/server/game/Mails/Mail.cpp56
1 files changed, 24 insertions, 32 deletions
diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp
index c42bd2a8e63..3233123c11a 100644
--- a/src/server/game/Mails/Mail.cpp
+++ b/src/server/game/Mails/Mail.cpp
@@ -250,43 +250,35 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction& trans, MailReceiver con
{
pReceiver->AddNewMailDeliverTime(deliver_time);
- if (pReceiver->IsMailsLoaded())
+ Mail* m = new Mail;
+ m->messageID = mailId;
+ m->mailTemplateId = GetMailTemplateId();
+ m->subject = GetSubject();
+ m->body = GetBody();
+ m->money = GetMoney();
+ m->COD = GetCOD();
+
+ for (MailItemMap::const_iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
{
- Mail* m = new Mail;
- m->messageID = mailId;
- m->mailTemplateId = GetMailTemplateId();
- m->subject = GetSubject();
- m->body = GetBody();
- m->money = GetMoney();
- m->COD = GetCOD();
-
- for (MailItemMap::const_iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
- {
- Item* item = mailItemIter->second;
- m->AddItem(item->GetGUID().GetCounter(), item->GetEntry());
- }
+ Item* item = mailItemIter->second;
+ m->AddItem(item->GetGUID().GetCounter(), item->GetEntry());
+ }
- m->messageType = sender.GetMailMessageType();
- m->stationery = sender.GetStationery();
- m->sender = sender.GetSenderId();
- m->receiver = receiver.GetPlayerGUIDLow();
- m->expire_time = expire_time;
- m->deliver_time = deliver_time;
- m->checked = checked;
- m->state = MAIL_STATE_UNCHANGED;
+ m->messageType = sender.GetMailMessageType();
+ m->stationery = sender.GetStationery();
+ m->sender = sender.GetSenderId();
+ m->receiver = receiver.GetPlayerGUIDLow();
+ m->expire_time = expire_time;
+ m->deliver_time = deliver_time;
+ m->checked = checked;
+ m->state = MAIL_STATE_UNCHANGED;
- pReceiver->AddMail(m); // to insert new mail to beginning of maillist
+ pReceiver->AddMail(m); // to insert new mail to beginning of maillist
- if (!m_items.empty())
- {
- for (MailItemMap::iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
- pReceiver->AddMItem(mailItemIter->second);
- }
- }
- else if (!m_items.empty())
+ if (!m_items.empty())
{
- CharacterDatabaseTransaction temp = CharacterDatabaseTransaction(nullptr);
- deleteIncludedItems(temp);
+ for (MailItemMap::iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
+ pReceiver->AddMItem(mailItemIter->second);
}
}
else if (!m_items.empty())