91 lines
1.8 KiB
C
91 lines
1.8 KiB
C
|
|
#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
|
|||
|
|
|
|||
|
|
|