*Backed out changeset 3be01fb200a5

--HG--
branch : trunk
This commit is contained in:
maximius
2009-10-17 15:51:44 -07:00
parent 26b5e033ff
commit e585187b24
2257 changed files with 103863 additions and 761 deletions
+23
View File
@@ -19,11 +19,15 @@
*/
#ifndef TRINITY_MAIL_H
#define TRINITY_MAIL_H
#include "Common.h"
#include <map>
class Item;
#define MAIL_BODY_ITEM_TEMPLATE 8383 // - plain letter, A Dusty Unsent Letter: 889
#define MAX_MAIL_ITEMS 12
enum MailCheckMask
{
MAIL_CHECK_MASK_NONE = 0,
@@ -32,6 +36,7 @@ enum MailCheckMask
MAIL_CHECK_MASK_COD_PAYMENT = 8,
MAIL_CHECK_MASK_RETURNED = 16
};
enum MailMessageType
{
MAIL_NORMAL = 0,
@@ -40,12 +45,14 @@ enum MailMessageType
MAIL_GAMEOBJECT = 4, // client send CMSG_GAMEOBJECT_QUERY on this mailmessagetype
MAIL_ITEM = 5, // client send CMSG_ITEM_QUERY on this mailmessagetype
};
enum MailState
{
MAIL_STATE_UNCHANGED = 1,
MAIL_STATE_CHANGED = 2,
MAIL_STATE_DELETED = 3
};
enum MailAuctionAnswers
{
AUCTION_OUTBIDDED = 0,
@@ -56,6 +63,7 @@ enum MailAuctionAnswers
AUCTION_CANCELED = 5,
AUCTION_SALE_PENDING = 6
};
// gathered from Stationery.dbc
enum MailStationery
{
@@ -66,21 +74,27 @@ enum MailStationery
MAIL_STATIONERY_VAL = 0x40,
MAIL_STATIONERY_CHR = 0x41
};
struct MailItemInfo
{
uint32 item_guid;
uint32 item_template;
};
struct MailItem
{
MailItem() : item_slot(0), item_guidlow(0), item_template(0), item(NULL) {}
uint8 item_slot; // slot in mail
uint32 item_guidlow; // item guid (low part)
uint32 item_template; // item entry
Item *item; // item pointer
void deleteItem(bool inDB = false);
};
typedef std::map<uint32, MailItem> MailItemMap;
class MailItemsInfo
{
public:
@@ -88,6 +102,7 @@ class MailItemsInfo
MailItemMap::const_iterator end() const { return i_MailItemMap.end(); }
MailItemMap::iterator begin() { return i_MailItemMap.begin(); }
MailItemMap::iterator end() { return i_MailItemMap.end(); }
void AddItem(uint32 guidlow, uint32 _template, Item *item, uint8 slot = 0)
{
MailItem mailItem;
@@ -97,6 +112,7 @@ class MailItemsInfo
mailItem.item = item;
i_MailItemMap[guidlow] = mailItem;
}
void AddItem(uint32 guidlow, uint8 slot = 0)
{
MailItem mailItem;
@@ -104,8 +120,10 @@ class MailItemsInfo
mailItem.item_slot = slot;
i_MailItemMap[guidlow] = mailItem;
}
uint8 size() const { return i_MailItemMap.size(); }
bool empty() const { return i_MailItemMap.empty(); }
void deleteIncludedItems(bool inDB = false)
{
for(MailItemMap::iterator mailItemIter = begin(); mailItemIter != end(); ++mailItemIter)
@@ -117,6 +135,7 @@ class MailItemsInfo
private:
MailItemMap i_MailItemMap; // Keep the items in a map to avoid duplicate guids (which can happen), store only low part of guid
};
struct Mail
{
uint32 messageID;
@@ -135,6 +154,7 @@ struct Mail
uint32 COD;
uint32 checked;
MailState state;
void AddItem(uint32 itemGuidLow, uint32 item_template)
{
MailItemInfo mii;
@@ -142,6 +162,7 @@ struct Mail
mii.item_template = item_template;
items.push_back(mii);
}
void AddAllItems(MailItemsInfo& pMailItemsInfo)
{
for(MailItemMap::iterator mailItemIter = pMailItemsInfo.begin(); mailItemIter != pMailItemsInfo.end(); ++mailItemIter)
@@ -150,6 +171,7 @@ struct Mail
AddItem(mailItem.item_guidlow, mailItem.item_template);
}
}
bool RemoveItem(uint32 item_guid)
{
for(std::vector<MailItemInfo>::iterator itr = items.begin(); itr != items.end(); ++itr)
@@ -162,6 +184,7 @@ struct Mail
}
return false;
}
bool HasItems() const { return !items.empty(); }
};
#endif