// vim:ts=8 sw=4 #ifndef __INC_ITEM_AWARD_H #define __INC_ITEM_AWARD_H #include #include #include "Peer.h" #ifdef ENABLE_EXTEND_ITEM_AWARD enum { ITEM_ATTRIBUTE_NONE = -1, ITEM_SKILL_VNUM = 50300, ITEM_SKILLFORGET_VNUM = 70037, }; #endif typedef struct SItemAward { DWORD dwID; char szLogin[LOGIN_MAX_LEN+1]; DWORD dwVnum; DWORD dwCount; DWORD dwSocket0; DWORD dwSocket1; DWORD dwSocket2; char szWhy[ITEM_AWARD_WHY_MAX_LEN+1]; bool bTaken; bool bMall; #ifdef ENABLE_EXTEND_ITEM_AWARD TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM]; #endif } TItemAward; class ItemAwardManager : public singleton { public: ItemAwardManager(); virtual ~ItemAwardManager(); void RequestLoad(); void Load(SQLMsg * pMsg); std::set * GetByLogin(const char * c_pszLogin); void Taken(DWORD dwAwardID, DWORD dwItemID); #ifdef ENABLE_EXTEND_ITEM_AWARD void CheckItemAddonType(TItemAward & pkItemAward, const TItemTable & pkItemTable); void CheckItemCount(TItemAward & pkItemAward, const TItemTable & pkItemTable); void CheckItemSocket(TItemAward & pkItemAward, const TItemTable & pkItemTable); void CheckItemBlend(TItemAward & pkItemAward, const TItemTable & pkItemTable); void CheckItemSkillBook(TItemAward & pkItemAward, const std::vector vec_skillTable); #endif #ifdef USE_ITEM_AWARD_CHECK_ATTRIBUTES void CheckItemAttributes(TItemAward & pkItemAward, const TItemTable & pkItemTable, const std::vector & vec_itemAttrTable, const std::vector & vec_itemRareTable); int8_t GetItemAttributeSetIndex(const uint8_t bItemType, const uint8_t bItemSubType) const; #endif // gift notify std::map& GetMapAward(); std::map >& GetMapkSetAwardByLogin(); private: // ID, ItemAward pair std::map m_map_award; // PID, ItemAward pair std::map > m_map_kSetAwardByLogin; }; #endif //martysama0134's 623a0779c74cb7565145d45548376308