mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-24 14:16:31 +00:00
feat(Core/Misc): implement ObjectGuid class (port from TC) (#4885)
This commit is contained in:
@@ -35,7 +35,7 @@ MailSender::MailSender(Object* sender, MailStationery stationery) : m_stationery
|
||||
break;*/
|
||||
case TYPEID_PLAYER:
|
||||
m_messageType = MAIL_NORMAL;
|
||||
m_senderId = sender->GetGUIDLow();
|
||||
m_senderId = sender->GetGUID().GetCounter();
|
||||
break;
|
||||
default:
|
||||
m_messageType = MAIL_NORMAL;
|
||||
@@ -59,7 +59,7 @@ MailSender::MailSender(Player* sender)
|
||||
{
|
||||
m_messageType = MAIL_NORMAL;
|
||||
m_stationery = sender->IsGameMaster() ? MAIL_STATIONERY_GM : MAIL_STATIONERY_DEFAULT;
|
||||
m_senderId = sender->GetGUIDLow();
|
||||
m_senderId = sender->GetGUID().GetCounter();
|
||||
}
|
||||
|
||||
MailSender::MailSender(uint32 senderEntry)
|
||||
@@ -69,18 +69,18 @@ MailSender::MailSender(uint32 senderEntry)
|
||||
m_stationery = MAIL_STATIONERY_DEFAULT;
|
||||
}
|
||||
|
||||
MailReceiver::MailReceiver(Player* receiver) : m_receiver(receiver), m_receiver_lowguid(receiver->GetGUIDLow())
|
||||
MailReceiver::MailReceiver(Player* receiver) : m_receiver(receiver), m_receiver_lowguid(receiver->GetGUID().GetCounter())
|
||||
{
|
||||
}
|
||||
|
||||
MailReceiver::MailReceiver(Player* receiver, uint32 receiver_lowguid) : m_receiver(receiver), m_receiver_lowguid(receiver_lowguid)
|
||||
MailReceiver::MailReceiver(Player* receiver, ObjectGuid::LowType receiver_lowguid) : m_receiver(receiver), m_receiver_lowguid(receiver_lowguid)
|
||||
{
|
||||
ASSERT(!receiver || receiver->GetGUIDLow() == receiver_lowguid);
|
||||
ASSERT(!receiver || receiver->GetGUID().GetCounter() == receiver_lowguid);
|
||||
}
|
||||
|
||||
MailDraft& MailDraft::AddItem(Item* item)
|
||||
{
|
||||
m_items[item->GetGUIDLow()] = item;
|
||||
m_items[item->GetGUID()] = item;
|
||||
return *this;
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ void MailDraft::deleteIncludedItems(SQLTransaction& trans, bool inDB /*= false*/
|
||||
if (inDB)
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE);
|
||||
stmt->setUInt32(0, item->GetGUIDLow());
|
||||
stmt->setUInt32(0, item->GetGUID().GetCounter());
|
||||
trans->Append(stmt);
|
||||
}
|
||||
|
||||
@@ -129,13 +129,13 @@ void MailDraft::deleteIncludedItems(SQLTransaction& trans, bool inDB /*= false*/
|
||||
m_items.clear();
|
||||
}
|
||||
|
||||
void MailDraft::SendReturnToSender(uint32 /*sender_acc*/, uint32 sender_guid, uint32 receiver_guid, SQLTransaction& trans)
|
||||
void MailDraft::SendReturnToSender(uint32 /*sender_acc*/, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, SQLTransaction& trans)
|
||||
{
|
||||
Player* receiver = ObjectAccessor::FindPlayerInOrOutOfWorld(MAKE_NEW_GUID(receiver_guid, 0, HIGHGUID_PLAYER));
|
||||
Player* receiver = ObjectAccessor::FindPlayerByLowGUID(receiver_guid);
|
||||
|
||||
uint32 rc_account = 0;
|
||||
if (!receiver)
|
||||
rc_account = sObjectMgr->GetPlayerAccountIdByGUID(MAKE_NEW_GUID(receiver_guid, 0, HIGHGUID_PLAYER));
|
||||
rc_account = sObjectMgr->GetPlayerAccountIdByGUID(receiver_guid);
|
||||
|
||||
if (!receiver && !rc_account) // sender not exist
|
||||
{
|
||||
@@ -156,7 +156,7 @@ void MailDraft::SendReturnToSender(uint32 /*sender_acc*/, uint32 sender_guid, u
|
||||
// owner in data will set at mail receive and item extracting
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ITEM_OWNER);
|
||||
stmt->setUInt32(0, receiver_guid);
|
||||
stmt->setUInt32(1, item->GetGUIDLow());
|
||||
stmt->setUInt32(1, item->GetGUID().GetCounter());
|
||||
trans->Append(stmt);
|
||||
}
|
||||
}
|
||||
@@ -178,7 +178,7 @@ void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver,
|
||||
return;
|
||||
|
||||
Player* pReceiver = receiver.GetPlayer(); // can be nullptr
|
||||
Player* pSender = ObjectAccessor::FindPlayerInOrOutOfWorld(MAKE_NEW_GUID(sender.GetSenderId(), 0, HIGHGUID_PLAYER));
|
||||
Player* pSender = ObjectAccessor::FindPlayerByLowGUID(sender.GetSenderId());
|
||||
|
||||
if (pReceiver)
|
||||
prepareItems(pReceiver, trans); // generate mail template items
|
||||
@@ -233,7 +233,7 @@ void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver,
|
||||
Item* pItem = mailItemIter->second;
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL_ITEM);
|
||||
stmt->setUInt32(0, mailId);
|
||||
stmt->setUInt32(1, pItem->GetGUIDLow());
|
||||
stmt->setUInt32(1, pItem->GetGUID().GetCounter());
|
||||
stmt->setUInt32(2, receiver.GetPlayerGUIDLow());
|
||||
trans->Append(stmt);
|
||||
}
|
||||
@@ -257,7 +257,7 @@ void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver,
|
||||
for (MailItemMap::const_iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
|
||||
{
|
||||
Item* item = mailItemIter->second;
|
||||
m->AddItem(item->GetGUIDLow(), item->GetEntry());
|
||||
m->AddItem(item->GetGUID().GetCounter(), item->GetEntry());
|
||||
}
|
||||
|
||||
m->messageType = sender.GetMailMessageType();
|
||||
|
||||
@@ -92,20 +92,20 @@ private:
|
||||
class MailReceiver
|
||||
{
|
||||
public: // Constructors
|
||||
explicit MailReceiver(uint32 receiver_lowguid) : m_receiver(nullptr), m_receiver_lowguid(receiver_lowguid) {}
|
||||
explicit MailReceiver(ObjectGuid::LowType receiver_lowguid) : m_receiver(nullptr), m_receiver_lowguid(receiver_lowguid) {}
|
||||
MailReceiver(Player* receiver);
|
||||
MailReceiver(Player* receiver, uint32 receiver_lowguid);
|
||||
MailReceiver(Player* receiver, ObjectGuid::LowType receiver_lowguid);
|
||||
public: // Accessors
|
||||
[[nodiscard]] Player* GetPlayer() const { return m_receiver; }
|
||||
[[nodiscard]] uint32 GetPlayerGUIDLow() const { return m_receiver_lowguid; }
|
||||
[[nodiscard]] ObjectGuid::LowType GetPlayerGUIDLow() const { return m_receiver_lowguid; }
|
||||
private:
|
||||
Player* m_receiver;
|
||||
uint32 m_receiver_lowguid;
|
||||
ObjectGuid::LowType m_receiver_lowguid;
|
||||
};
|
||||
|
||||
class MailDraft
|
||||
{
|
||||
typedef std::map<uint32, Item*> MailItemMap;
|
||||
typedef std::map<ObjectGuid, Item*> MailItemMap;
|
||||
|
||||
public: // Constructors
|
||||
explicit MailDraft(uint16 mailTemplateId, bool need_items = true)
|
||||
@@ -126,7 +126,7 @@ public: // modifiers
|
||||
MailDraft& AddCOD(uint32 COD) { m_COD = COD; return *this; }
|
||||
|
||||
public: // finishers
|
||||
void SendReturnToSender(uint32 sender_acc, uint32 sender_guid, uint32 receiver_guid, SQLTransaction& trans);
|
||||
void SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, SQLTransaction& trans);
|
||||
void SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked = MAIL_CHECK_MASK_NONE, uint32 deliver_delay = 0, uint32 custom_expiration = 0, bool deleteMailItemsFromDB = false, bool sendMail = true);
|
||||
|
||||
private:
|
||||
@@ -146,7 +146,7 @@ private:
|
||||
|
||||
struct MailItemInfo
|
||||
{
|
||||
uint32 item_guid;
|
||||
ObjectGuid::LowType item_guid;
|
||||
uint32 item_template;
|
||||
};
|
||||
typedef std::vector<MailItemInfo> MailItemInfoVec;
|
||||
@@ -158,7 +158,7 @@ struct Mail
|
||||
uint8 stationery;
|
||||
uint16 mailTemplateId;
|
||||
uint32 sender;
|
||||
uint32 receiver;
|
||||
ObjectGuid::LowType receiver;
|
||||
std::string subject;
|
||||
std::string body;
|
||||
std::vector<MailItemInfo> items;
|
||||
@@ -170,7 +170,7 @@ struct Mail
|
||||
uint32 checked;
|
||||
MailState state;
|
||||
|
||||
void AddItem(uint32 itemGuidLow, uint32 item_template)
|
||||
void AddItem(ObjectGuid::LowType itemGuidLow, uint32 item_template)
|
||||
{
|
||||
MailItemInfo mii;
|
||||
mii.item_guid = itemGuidLow;
|
||||
@@ -178,7 +178,7 @@ struct Mail
|
||||
items.push_back(mii);
|
||||
}
|
||||
|
||||
bool RemoveItem(uint32 item_guid)
|
||||
bool RemoveItem(ObjectGuid::LowType item_guid)
|
||||
{
|
||||
for (MailItemInfoVec::iterator itr = items.begin(); itr != items.end(); ++itr)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user