Files
mir_server/Gateway/common/db/item_data.h

91 lines
1.8 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _USER_ITEM_H_
#define _USER_ITEM_H_
#include "common.h"
// <20><>ʱû<CAB1>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>varchar64<36><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//#define ITEM_DATA_RESERVED_SIZE 64
#define EQUIP_ATTR_COUNT 8
#define ITEM_ATTR_TYPEVALUE 2
#define ITEM_ATTR_TYPE 0
#define ITEM_ATTR_VALUE 1
enum BagType
{
BagType_Item = 0,
BagType_Equip,
BagType_Depot,
};
#pragma pack (push, 1)
union ItemSeries
{
int64_t llId;
struct
{
unsigned int time_; //31-0λ<30><CEBB>ʾ<EFBFBD><CABE>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ʱ<EFBFBD>䣬ֵΪ<D6B5><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
uint16_t series_; //47-32λ<32><CEBB>ʾ<EFBFBD><CABE>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>У<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ+1<><31>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
uint16_t sid_; //55-48λ<38><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
} t;
public:
//inline operator int64_t () const { return llId; }
//inline bool operator == (const ItemSeries& series) const { return llId == series.llId; }
//inline bool operator != (const ItemSeries& series) const { return llId != series.llId; }
};
union ItemAttrData
{
// define:
struct EquipAttr
{
int attr[EQUIP_ATTR_COUNT][ITEM_ATTR_TYPEVALUE]; // <20><><EFBFBD><EFBFBD>+value
};
// public:
EquipAttr equip_attr;
};
struct ItemData
{
int64_t uid; //<2F><>ƷΨһϵ<D2BB>к<EFBFBD> ItemSeries
int id;
int count;
ItemAttrData attr_data; // <20>󲿷<EFBFBD><F3B2BFB7><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA>٣<EFBFBD><D9A3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>Ż<EFBFBD>
ItemAttrData ex_attr_data;
ItemData()
{
memset(this, 0, sizeof(ItemData));
}
public:
//<2F>޸<EFBFBD>useritem ע<><D7A2><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD> writeToPack, writeDbPack, writeCrcPack
//<2F><>װ<EFBFBD><D7B0><EFBFBD>͸<EFBFBD><CDB8>ͻ<EFBFBD><CDBB>˵İ<CBB5>
void writeData(DataPacket& pack) {
pack.writeBuf(this, sizeof(ItemData));
}
void readData(DataPacketReader& pack) {
pack.readBuf(this, sizeof(ItemData));
}
static void copy(ItemData* dstItem, ItemData* srcItem)
{
if (!dstItem || !srcItem || dstItem == srcItem) return;
memcpy(dstItem, srcItem, sizeof(ItemData));
}
};
#pragma pack(pop)
//STATIC_ASSERT(sizeof(ItemData) < ITEM_DATA_RESERVED_SIZE);
typedef std::vector<ItemData*> ItemList ;
#endif