Files
mir_server/server/LogicServer/misc/AsyncOpCollector.h

107 lines
2.7 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#pragma once
enum tagAsyncOPType
{
asop_none, // 无效操作
asop_withdrawYuanBao = 1, // 提取元宝
asop_useSACard, // 使用增值业务卡
asop_createGuild, // 创建工会
};
enum tagOPResult
{
op_Succ, // 操作成功
op_Failed, // 操作失败
op_Expired, // 超时
op_ParamError, // 参数错误
};
// 增值卡相关信息
typedef struct tagSACardInfo
{
UINT64 m_nSN;
int m_nType;
int m_nSubType;
int m_nErrorCode;
bool m_bQuery; // true为查询false为使用
}SACardInfo;
// 元宝相关信息
struct tagWithdrawYuanBaoInfo : public Counter<tagWithdrawYuanBaoInfo>
{
int m_nCount;
};
class AsyncOpItem : public Counter<AsyncOpItem>
{
public:
tagAsyncOPType m_nType; // 类型
bool m_bActive; // 用户主动发起的操作
TICKCOUNT m_nExpireTime; // 过期时间(ms)
void *m_pData; // 操作类型对应的数据
AsyncOpItem() : m_nType(asop_none), m_pData(NULL){}
};
class AsyncOpCollector
{
public:
AsyncOpCollector() : m_curAsyncOpType(asop_none){}
void SetActor(CActor *pActor);
/*
* Comments:
* Param tagAsyncOPType nType:
* @Return bool:
*/
bool CanAsyncOp(tagAsyncOPType nType);
/*
* Comments:
* Param tagAsyncOPType nType:
* Param unsigned int nExpireTime:
* Param void * data:
* Param bool bActive:
* @Return bool: falsetrue
*/
bool StartAsyncOp(tagAsyncOPType nType, unsigned int nExpireTime, void *data = 0, bool bActive = true);
/*
* Comments:
* Param tagAsyncOPType nType:
* Param int nResult:
* Param void *pData:
* @Return void:
*/
void NotifyAsyncOpResult(tagAsyncOPType nType, int nResult, void *pData);
/*
* Comments:
* Param TICKCOUNT nCurrentTime: TickCount
* @Return void:
*/
void Update(TICKCOUNT nCurrentTime);
protected:
/*
* Comments:
* Param AsyncOpItem& item:
* @Return void:
*/
void OnAsyncOpExpired(AsyncOpItem &item);
void OnResultUseSACard(int nResult, void *pData);
void OnResultWidthdrawYuanBao(int nResult);
/*
* Comments: 使
* @Return void:
*/
void OnUseSACardExpired();
private:
CActor *m_pActor; // 玩家对象
CVector<AsyncOpItem> m_asyncOpList; // 异步操作列表
tagAsyncOPType m_curAsyncOpType; // 当前异步操作类型
};