Marty-v58/source-server/Srcs/Server/db/src/ItemAwardManager.h
2024-06-01 15:59:51 -05:00

70 lines
2.1 KiB
C++

// vim:ts=8 sw=4
#ifndef __INC_ITEM_AWARD_H
#define __INC_ITEM_AWARD_H
#include <map>
#include <set>
#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<ItemAwardManager>
{
public:
ItemAwardManager();
virtual ~ItemAwardManager();
void RequestLoad();
void Load(SQLMsg * pMsg);
std::set<TItemAward *> * 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<TSkillTable> vec_skillTable);
#endif
#ifdef USE_ITEM_AWARD_CHECK_ATTRIBUTES
void CheckItemAttributes(TItemAward & pkItemAward, const TItemTable & pkItemTable, const std::vector<TItemAttrTable> & vec_itemAttrTable, const std::vector<TItemAttrTable> & vec_itemRareTable);
int8_t GetItemAttributeSetIndex(const uint8_t bItemType, const uint8_t bItemSubType) const;
#endif
// gift notify
std::map<DWORD, TItemAward *>& GetMapAward();
std::map<std::string, std::set<TItemAward *> >& GetMapkSetAwardByLogin();
private:
// ID, ItemAward pair
std::map<DWORD, TItemAward *> m_map_award;
// PID, ItemAward pair
std::map<std::string, std::set<TItemAward *> > m_map_kSetAwardByLogin;
};
#endif
//martysama0134's 623a0779c74cb7565145d45548376308