chore(Core): Debloat Mail.cpp (#12881)

This commit is contained in:
Synful-Syn
2022-09-18 22:57:22 -04:00
committed by GitHub
parent 25f88caa42
commit 6ae8b787e5
+11 -20
View File
@@ -153,13 +153,7 @@ void MailDraft::SendReturnToSender(uint32 /*sender_acc*/, ObjectGuid::LowType se
{ {
Player* receiver = ObjectAccessor::FindPlayerByLowGUID(receiver_guid); Player* receiver = ObjectAccessor::FindPlayerByLowGUID(receiver_guid);
uint32 rc_account = 0; if (!receiver && !sCharacterCache->GetCharacterAccountIdByGuid(ObjectGuid(HighGuid::Player, receiver_guid)))
if (!receiver)
{
rc_account = sCharacterCache->GetCharacterAccountIdByGuid(ObjectGuid(HighGuid::Player, receiver_guid));
}
if (!receiver && !rc_account) // sender not exist
{ {
deleteIncludedItems(trans, true); deleteIncludedItems(trans, true);
return; return;
@@ -200,7 +194,6 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons
return; return;
Player* pReceiver = receiver.GetPlayer(); // can be nullptr Player* pReceiver = receiver.GetPlayer(); // can be nullptr
Player* pSender = ObjectAccessor::FindPlayerByLowGUID(sender.GetSenderId());
if (pReceiver) if (pReceiver)
prepareItems(pReceiver, trans); // generate mail template items prepareItems(pReceiver, trans); // generate mail template items
@@ -219,13 +212,13 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons
else if (sender.GetMailMessageType() == MAIL_CREATURE && sBattlegroundMgr->GetBattleMasterBG(sender.GetSenderId()) != BATTLEGROUND_TYPE_NONE) else if (sender.GetMailMessageType() == MAIL_CREATURE && sBattlegroundMgr->GetBattleMasterBG(sender.GetSenderId()) != BATTLEGROUND_TYPE_NONE)
expire_delay = DAY; expire_delay = DAY;
// default case: expire time if COD 3 days, if no COD 30 days (or 90 days if sender is a game master) // default case: expire time if COD 3 days, if no COD 30 days (or 90 days if sender is a game master)
else else if (m_COD)
{
if (m_COD)
expire_delay = 3 * DAY; expire_delay = 3 * DAY;
else if (custom_expiration > 0 ) else if (custom_expiration > 0)
expire_delay = custom_expiration * DAY; expire_delay = custom_expiration * DAY;
else else
{
Player* pSender = ObjectAccessor::FindPlayerByLowGUID(sender.GetSenderId());
expire_delay = pSender && pSender->GetSession()->GetSecurity() ? 90 * DAY : 30 * DAY; expire_delay = pSender && pSender->GetSession()->GetSecurity() ? 90 * DAY : 30 * DAY;
} }
@@ -235,27 +228,26 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons
uint8 index = 0; uint8 index = 0;
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL);
stmt->SetData( index, mailId); stmt->SetData( index, mailId);
stmt->SetData (++index, uint8(sender.GetMailMessageType())); stmt->SetData(++index, uint8(sender.GetMailMessageType()));
stmt->SetData (++index, int8(sender.GetStationery())); stmt->SetData(++index, int8(sender.GetStationery()));
stmt->SetData(++index, GetMailTemplateId()); stmt->SetData(++index, GetMailTemplateId());
stmt->SetData(++index, sender.GetSenderId()); stmt->SetData(++index, sender.GetSenderId());
stmt->SetData(++index, receiver.GetPlayerGUIDLow()); stmt->SetData(++index, receiver.GetPlayerGUIDLow());
stmt->SetData(++index, GetSubject()); stmt->SetData(++index, GetSubject());
stmt->SetData(++index, GetBody()); stmt->SetData(++index, GetBody());
stmt->SetData (++index, !m_items.empty()); stmt->SetData(++index, !m_items.empty());
stmt->SetData(++index, uint32(expire_time)); stmt->SetData(++index, uint32(expire_time));
stmt->SetData(++index, uint32(deliver_time)); stmt->SetData(++index, uint32(deliver_time));
stmt->SetData(++index, m_money); stmt->SetData(++index, m_money);
stmt->SetData(++index, m_COD); stmt->SetData(++index, m_COD);
stmt->SetData (++index, uint8(checked)); stmt->SetData(++index, uint8(checked));
trans->Append(stmt); trans->Append(stmt);
for (MailItemMap::const_iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter) for (MailItemMap::const_iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
{ {
Item* pItem = mailItemIter->second;
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL_ITEM); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL_ITEM);
stmt->SetData(0, mailId); stmt->SetData(0, mailId);
stmt->SetData(1, pItem->GetGUID().GetCounter()); stmt->SetData(1, mailItemIter->second->GetGUID().GetCounter());
stmt->SetData(2, receiver.GetPlayerGUIDLow()); stmt->SetData(2, receiver.GetPlayerGUIDLow());
trans->Append(stmt); trans->Append(stmt);
} }
@@ -302,7 +294,6 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons
} }
else if (!m_items.empty()) else if (!m_items.empty())
{ {
CharacterDatabaseTransaction temp = CharacterDatabaseTransaction(nullptr); deleteIncludedItems(CharacterDatabaseTransaction(nullptr));
deleteIncludedItems(temp);
} }
} }