108 lines
3.6 KiB
C
108 lines
3.6 KiB
C
|
|
#pragma once
|
|||
|
|
#include <vector>
|
|||
|
|
typedef struct tagServerMailAttach
|
|||
|
|
{
|
|||
|
|
int nServerMailId; //全服邮件id
|
|||
|
|
ACTORAWARD actorAward;//奖励配置
|
|||
|
|
tagServerMailAttach()
|
|||
|
|
{
|
|||
|
|
memset(this, 0, sizeof(*this));
|
|||
|
|
}
|
|||
|
|
}ServerMailAttach;
|
|||
|
|
typedef struct tagServerMail
|
|||
|
|
{
|
|||
|
|
// int nServerMailId; //全服邮件id
|
|||
|
|
// unsigned int nActorId; //角色id
|
|||
|
|
// char sTitle[200]; //邮件标题
|
|||
|
|
// char sContent[600]; //邮件内容
|
|||
|
|
// int nMinVipLevel; //最低vip等级
|
|||
|
|
// int nMaxVipLevel; //最高vip等级
|
|||
|
|
// int nMinLevel; //最低人物等级
|
|||
|
|
// int nMaxLevel; //最高人物等级
|
|||
|
|
// unsigned int nMinRegisterTime; //最早注册时间
|
|||
|
|
// unsigned int nMaxRegisterTime; //最晚注册时间
|
|||
|
|
// unsigned int nMinLoginTime ; //最早登录时间
|
|||
|
|
// unsigned int nMaxLoginTime; //最晚登录时间
|
|||
|
|
// int btOnline; //在线 0全部,1在线,2不在线
|
|||
|
|
// int btSex; //性别 -1全部,0男, 1女
|
|||
|
|
// int nWay; //用途标识,0系统正常邮件,1后台福利
|
|||
|
|
ServerMailDef serverData;
|
|||
|
|
ServerMailAttach mailAttach[MAILATTACHCOUNT];
|
|||
|
|
|
|||
|
|
tagServerMail()
|
|||
|
|
{
|
|||
|
|
memset(this, 0, sizeof(*this));
|
|||
|
|
}
|
|||
|
|
}ServerMail;
|
|||
|
|
enum eServerMailOnlineType
|
|||
|
|
{
|
|||
|
|
eMo_All,
|
|||
|
|
eMo_Online,
|
|||
|
|
eMo_OffLine
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class CMailMgr:
|
|||
|
|
public CComponent
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
|
|||
|
|
CMailMgr();
|
|||
|
|
~CMailMgr();
|
|||
|
|
public:
|
|||
|
|
void RunOne(CMiniDateTime& minidate,TICKCOUNT tick);
|
|||
|
|
void OnDbReturnData(INT_PTR nCmd,char * data,SIZE_T size);
|
|||
|
|
void Load();
|
|||
|
|
//获取全服邮件
|
|||
|
|
ServerMail* GetServerMail(int nServerMailId);
|
|||
|
|
void OnEnterGame(CActor* pActor);
|
|||
|
|
//删除全服邮件,即设成已完成,不再处理
|
|||
|
|
void DelServerMail(int nServerMailId);
|
|||
|
|
|
|||
|
|
//用于测试
|
|||
|
|
bool TestAddServerMail(ServerMail& serverMail);
|
|||
|
|
|
|||
|
|
void AddserverMailToDb(ServerMail& serverMail);
|
|||
|
|
private:
|
|||
|
|
//加载全服邮件
|
|||
|
|
void LoadNewServerMail();
|
|||
|
|
//发给指定玩家邮件
|
|||
|
|
void SendServerMailById(unsigned int nActorId, ServerMail& mail);
|
|||
|
|
//处理全服邮件
|
|||
|
|
void HandleAllServerMail();
|
|||
|
|
//设置已领取标记
|
|||
|
|
void SetActorGetServerMail(CActor* pActor, int nServerMailId);
|
|||
|
|
//是否发送过
|
|||
|
|
bool IsActorGetServerMail(CActor* pActor,int nServerMailId);
|
|||
|
|
//全服邮件筛选条件
|
|||
|
|
bool CheckServerMailCond(CActor* pActor, ServerMailDef& mail, bool isLogin = false);
|
|||
|
|
//设置完成标记
|
|||
|
|
void SendServerMailComplete(int nServerMailId);
|
|||
|
|
|
|||
|
|
void SendServerMail();
|
|||
|
|
|
|||
|
|
|
|||
|
|
// unsigned int nActorId; //角色id
|
|||
|
|
// char sTitle[200]; //邮件标题
|
|||
|
|
// char sContent[600]; //邮件内容
|
|||
|
|
// int nMinVipLevel; //最低vip等级
|
|||
|
|
// int nMaxVipLevel; //最高vip等级
|
|||
|
|
// int nMinLevel; //最低人物等级
|
|||
|
|
// int nMaxLevel; //最高人物等级
|
|||
|
|
// int nMinRegisterTime; //最早注册时间
|
|||
|
|
// int nMaxRegisterTime; //最晚注册时间
|
|||
|
|
// int nMinLoginTime ; //最早登录时间
|
|||
|
|
// int nMaxLoginTime; //最晚登录时间
|
|||
|
|
// BYTE btOnline; //在线 0全部,1在线,2不在线
|
|||
|
|
// char btSex; //性别 -1全部,0男, 1女
|
|||
|
|
// unsigned int nWay; //用途标识,0系统正常邮件,1后台福利
|
|||
|
|
void AddserverMailToDb(const char * sTitle, const char * sContent, unsigned int nActorId, std::vector<ACTORAWARD> vAwards,int nMinVipLevel = -1, int nMaxVipLevel = -1,
|
|||
|
|
int nMinLevel = -1, int nMaxLevel = -1,int nMinRegisterTime = -1,int nMaxRegisterTime = -1,int nMinLoginTime = -1,int nMaxLoginTime = -1,int btOnline = 0,int btSex = -1,
|
|||
|
|
int nWay = 0) ;
|
|||
|
|
private:
|
|||
|
|
CTimer<60000> m_1minuteTimer; //1分钟的定时器
|
|||
|
|
int m_nMaxServerMailId; //最大的服务器邮件id
|
|||
|
|
CVector<ServerMail> m_serverMailList;
|
|||
|
|
unsigned int nToDayTime; //当前开服时间
|
|||
|
|
bool m_Init;
|
|||
|
|
};
|