89 lines
1.9 KiB
C++
89 lines
1.9 KiB
C++
#ifndef _MAIL_DATA_H_
|
||
#define _MAIL_DATA_H_
|
||
|
||
#include "common.h"
|
||
|
||
enum MailAwardType
|
||
{
|
||
MailAwardType_Currency,
|
||
MailAwardType_Item,
|
||
};
|
||
|
||
enum MailReadStatusType
|
||
{
|
||
MailReadStatusType_NotRead,
|
||
MailReadStatusType_HaveRead,
|
||
};
|
||
|
||
enum MailAwardStatusType
|
||
{
|
||
MailAwardStatusType_NoAward = -1, //无附件
|
||
MailAwardStatusType_CanAward = 0, //可领取
|
||
MailAwardStatusType_HaveAward = 1, //已领取
|
||
};
|
||
|
||
#pragma pack (push, 4)
|
||
union MailSeries
|
||
{
|
||
int64_t llId;
|
||
|
||
struct
|
||
{
|
||
unsigned int time_; //31-0位表示物品产生的日期和时间,值为短日期类型,单位是秒
|
||
uint16_t series_; //47-32位表示在一秒内的序列,每产生一个物品则序列值+1,一秒后序列值归零
|
||
uint16_t sid_; //55-48位表示服务器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; }
|
||
};
|
||
|
||
struct MailAwardData
|
||
{
|
||
int type; //附件类型
|
||
int id; //附件类型如果是物品的话,就用来存物品id,是货币的话就没用
|
||
int count; //数量
|
||
|
||
MailAwardData() :type(0), id(0), count(0) {}
|
||
};
|
||
|
||
struct MailAwardList
|
||
{
|
||
int awardCount; //附件数量
|
||
MailAwardData awardList[10]; //附件列表
|
||
};
|
||
|
||
struct MailData
|
||
{
|
||
static const int HEAD_SIZE = 128;
|
||
static const int CONTEXT_SIZE = 1024;
|
||
|
||
int uid; //邮件唯一系列号 MailSeries
|
||
int readStatus; //读取状态
|
||
int awardStatus; //领奖状态
|
||
int sendtime; //发送的时间
|
||
char head[128]; //邮件标题
|
||
char context[1024]; //邮件正文
|
||
MailAwardList award_data; // 大部分物品都是装备,且属性很少,不需要做优化
|
||
|
||
MailData()
|
||
{
|
||
memset(this, 0, sizeof(MailData));
|
||
}
|
||
|
||
public:
|
||
//修改useritem 注意需要修改以下3个函数 writeToPack, writeDbPack, writeCrcPack
|
||
//组装发送给客户端的包
|
||
void writeData(DataPacket& pack) {
|
||
pack.writeBuf(this, sizeof(MailData));
|
||
}
|
||
|
||
void readData(DataPacketReader& pack) {
|
||
pack.readBuf(this, sizeof(MailData));
|
||
}
|
||
};
|
||
|
||
#pragma pack(pop)
|
||
|
||
#endif |