示例#1
0
KAILogic* KAIManager::CreateAI(int nType, DWORD dwScriptID)
{
    KAILogic* pResult       = NULL;
    BOOL      bRetCode      = false;
    KAILogic* pAI           = NULL;

    pAI = KMEMORY_NEW(KAILogic);
    KGLOG_PROCESS_ERROR(pAI);

    bRetCode = pAI->Setup(nType, dwScriptID);
    KGLOG_PROCESS_ERROR(bRetCode);

    pResult = pAI;
Exit0:
    if (!pResult)
    {
        if (pAI)
        {
            KMemory::Delete(pAI);
            pAI = NULL;
        }

        KGLogPrintf(KGLOG_ERR, "[AI] Setup AI failed, AIType: %d", nType);
    }
    return pResult;
}
示例#2
0
IPath* KComplexPath::GetClone() const
{
    KCOMPLEX_SUB_PATHS::const_iterator itPaths;
    KComplexPath* pResult = NULL;
    KComplexPath* pClone = NULL;

    pClone = KMEMORY_NEW(KComplexPath);
    KGLOG_PROCESS_ERROR(pClone);

    pClone->m_cStart = m_cStart;
    pClone->m_cEnd = m_cEnd;
    pClone->m_nStartFrame = m_nStartFrame;
    pClone->m_nTotalFrame = m_nTotalFrame;

    for (itPaths = m_cSubPaths.begin(); itPaths != m_cSubPaths.end(); ++itPaths)
    {
        IPath* pSubPath = (*itPaths)->GetClone();
        KGLOG_PROCESS_ERROR(pSubPath);
        pClone->m_cSubPaths.push_back(pSubPath);
    }

    pResult = pClone;
Exit0:
    return pResult;
}
示例#3
0
BOOL KStatDataServer::Update(const char szName[], int64_t nValue)
{
    BOOL                                    bResult   = false;
    size_t                                  uNameLen  = 0;
    KStatData*                              pStatData = NULL;
    KDATA_TABLE::iterator                   it;
    std::pair<KDATA_TABLE::iterator, BOOL>  InsRet;

    uNameLen = strlen(szName) + 1;
    KGLOG_PROCESS_ERROR(uNameLen <= STAT_DATA_NAME_LEN);

    it = m_DataTable.find((char*)szName);

    if (it == m_DataTable.end())
    {
        pStatData = KMEMORY_NEW(KStatData);
        KGLOG_PROCESS_ERROR(pStatData);

        strncpy(pStatData->m_szName, szName, sizeof(pStatData->m_szName));
        pStatData->m_szName[sizeof(pStatData->m_szName) - 1] = '\0';

        InsRet = m_DataTable.insert(std::make_pair(pStatData->m_szName, pStatData));
        KGLOG_PROCESS_ERROR(InsRet.second);

        it = InsRet.first;
    }
    
    pStatData = it->second;
    pStatData->m_nValue += nValue;

    if (pStatData->m_nID == 0)
    {
        m_Name2IDQueue.insert(szName);
    }
    else
    {
        // 只有已获得ID的数据才放入m_DataList中
        if (!pStatData->m_bInList)
        {
            // 不在队列里说明是已发送过的数据,此次再次修改
            m_DataList.push_back(pStatData);
            pStatData->m_bInList = true;
        }
    }

    bResult = true;
Exit0:
    return bResult;
}
示例#4
0
BOOL KActiveSettings::LoadData()
{
	BOOL 		bResult 	= false;
	BOOL 		bRetCode 	= false;
	int  		nHeight 	= 0;
    int         nEvent      = 0;
	DWORD       dwID        = ERROR_ID;
    DWORD       dwNextID    = 1;
    ITabFile* 	piTabFile 	= NULL;
    char        szEvent[64] = {0};
    KActiveSettingsItem* pActiveInfo = NULL;
    KVEC_ACTIVE_UPDATOR* pvecActive = NULL;
    KMAP_ACTIVE_UPDATOR::iterator it;

	piTabFile = g_OpenTabFile(SETTING_DIR"/ActivePlayer.tab");
	KGLOG_PROCESS_ERROR(piTabFile);
    
	nHeight = piTabFile->GetHeight();    
    m_vecActive.resize(nHeight - 1);

    for(int nRow = 2; nRow <= nHeight; ++nRow)
	{
        bRetCode = piTabFile->GetInteger(nRow, "ID", 0, (int*)&dwID);
        KGLOG_PROCESS_ERROR(bRetCode > 0);

        KGLOG_PROCESS_ERROR(dwID == dwNextID);
        ++dwNextID;

        pActiveInfo = &m_vecActive[dwID - 1];
        pActiveInfo->dwID = dwID;

        szEvent[0] = '\0';
        bRetCode = piTabFile->GetString(nRow, "Event", "peInvalid", szEvent, sizeof(szEvent));
        KGLOG_PROCESS_ERROR(bRetCode);

        bRetCode = ENUM_STR2INT(PLAYER_EVENT_TYPE, szEvent, pActiveInfo->nEvent);
        KGLOG_PROCESS_ERROR(bRetCode);

        bRetCode = piTabFile->GetInteger(nRow, "FinishValue", 0, (int*)&(pActiveInfo->nFininshValue));
        KGLOG_PROCESS_ERROR(bRetCode > 0);

        bRetCode = piTabFile->GetInteger(nRow, "UnLimitCount", 0, (BOOL*)&(pActiveInfo->bUnLimit));
        KGLOG_PROCESS_ERROR(bRetCode > 0);

        bRetCode = piTabFile->GetInteger(nRow, "ActivePoint", 0, (int*)&(pActiveInfo->nAwardActive));
        KGLOG_PROCESS_ERROR(bRetCode > 0);

        it = m_mapValueUpdator.find(pActiveInfo->nEvent);
        if (it == m_mapValueUpdator.end())
        {
            pvecActive = KMEMORY_NEW(KVEC_ACTIVE_UPDATOR);
            m_mapValueUpdator[pActiveInfo->nEvent] = pvecActive;
        }
        else
        {
            pvecActive = it->second;
        }

        pvecActive->push_back(dwID);
        pvecActive = NULL;
	}

Exit1:
	bResult = true;
Exit0:
	KG_COM_RELEASE(piTabFile);
	return bResult;
}