123 lines
2.7 KiB
C++
123 lines
2.7 KiB
C++
#include "StdAfx.h"
|
|
|
|
void AsyncOpCollector::SetActor(CActor *pActor)
|
|
{
|
|
m_pActor = pActor;
|
|
}
|
|
|
|
bool AsyncOpCollector::CanAsyncOp(tagAsyncOPType nType)
|
|
{
|
|
if (m_curAsyncOpType != asop_none)
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool AsyncOpCollector::StartAsyncOp(tagAsyncOPType nType, unsigned int nExpireTime, void *data, bool bActive)
|
|
{
|
|
if (asop_none == nType || (bActive && !CanAsyncOp(nType))) return false;
|
|
|
|
if (bActive)
|
|
m_curAsyncOpType = nType;
|
|
|
|
AsyncOpItem item;
|
|
item.m_nType = nType;
|
|
item.m_bActive = bActive;
|
|
item.m_nExpireTime = GetGlobalLogicEngine()->getTickCount() + nExpireTime;
|
|
item.m_pData = data;
|
|
m_asyncOpList.add(item);
|
|
|
|
return true;
|
|
}
|
|
|
|
void AsyncOpCollector::Update(TICKCOUNT nCurrentTime)
|
|
{
|
|
for (INT_PTR i = m_asyncOpList.count()-1; i >= 0 ; i--)
|
|
{
|
|
AsyncOpItem &item = m_asyncOpList[i];
|
|
if (item.m_nExpireTime < nCurrentTime)
|
|
{
|
|
OnAsyncOpExpired(item);
|
|
if (item.m_pData)
|
|
delete item.m_pData;
|
|
m_asyncOpList.remove(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void AsyncOpCollector::NotifyAsyncOpResult(tagAsyncOPType nType, int nResult, void *pData)
|
|
{
|
|
switch (nType)
|
|
{
|
|
case asop_withdrawYuanBao:
|
|
OnResultWidthdrawYuanBao(nResult);
|
|
break;
|
|
case asop_useSACard:
|
|
OnResultUseSACard(nResult, pData);
|
|
break;
|
|
case asop_createGuild:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void AsyncOpCollector::OnAsyncOpExpired(AsyncOpItem &item)
|
|
{
|
|
switch (item.m_nType)
|
|
{
|
|
case asop_withdrawYuanBao:
|
|
break;
|
|
case asop_useSACard:
|
|
OnUseSACardExpired();
|
|
break;
|
|
case asop_createGuild:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void AsyncOpCollector::OnResultUseSACard(int nResult, void *pData)
|
|
{
|
|
for (INT_PTR i = m_asyncOpList.count()-1; i >= 0 ; i--)
|
|
{
|
|
AsyncOpItem &item = m_asyncOpList[i];
|
|
if (item.m_nType == m_curAsyncOpType && item.m_bActive)
|
|
{
|
|
if (item.m_pData)
|
|
delete item.m_pData;
|
|
m_asyncOpList.remove(i);
|
|
}
|
|
}
|
|
|
|
m_curAsyncOpType = asop_none;
|
|
if (!pData || !m_pActor) return;
|
|
SACardInfo *pCard = (SACardInfo *)pData;
|
|
|
|
CScriptValueList paramList, retParamList;
|
|
//m_pActor->InitEventScriptVaueList(paramList, aeAsyncOpResult);
|
|
paramList << (BYTE)asop_useSACard << (BYTE)nResult << (BYTE)(pCard->m_bQuery) << (BYTE)(pCard->m_nErrorCode);
|
|
/*char szBuf[21] = {0};
|
|
sprintf(szBuf, "%lld", (__int64)(pCard->m_nSN));
|
|
paramList << szBuf;*/
|
|
double dSn;
|
|
memcpy(&dSn, &(pCard->m_nSN), sizeof(double));
|
|
paramList << dSn;
|
|
paramList << pCard->m_nType << pCard->m_nSubType;
|
|
m_pActor->OnEvent(aeAsyncOpResult,paramList, retParamList);
|
|
}
|
|
|
|
void AsyncOpCollector::OnUseSACardExpired()
|
|
{
|
|
CScriptValueList paramList, retParamList;
|
|
//m_pActor->InitEventScriptVaueList(paramList, aeAsyncOpResult);
|
|
paramList << (BYTE)asop_useSACard << (BYTE)op_Expired;
|
|
m_pActor->OnEvent(aeAsyncOpResult,paramList, retParamList);
|
|
}
|
|
|
|
void AsyncOpCollector::OnResultWidthdrawYuanBao(int nResult)
|
|
{
|
|
}
|