예제 #1
0
BOOL KDoodadMgr::Init( )
{
	const KENV_CONFIG* pConfig = g_piNsBaseRequire->GetEnvConfig();
	QCONFIRM_RET_FALSE(pConfig);

	m_cObjPool.Init(pConfig->nMaxDoodad);

	/*
	BOOL bRet = ReadDoodadTemplate();
	*/

	BOOL bRet = LoadDoodadTemplate();
	QCONFIRM_RET_FALSE(bRet && "LoadDoodadTemplate Failed!");

	return TRUE;
}
예제 #2
0
BOOL KDoodadTemplateList::Init()
{
    BOOL            bResult         = false;
	BOOL            bRetCode        = false;
	ITabFile*       piTabFile       = NULL;
	int             nHeight         = 0;
    int             nDoodadCount    = 0;
    KDoodadTemplate DoodadTemplate;
	char            szFilePath[MAX_PATH];

	snprintf(szFilePath, sizeof(szFilePath), "%s/%s", SETTING_DIR, DOODAD_TEMPLATE_FILENAME);
	szFilePath[sizeof(szFilePath) - 1] = '\0';

	piTabFile = g_OpenTabFile(szFilePath);
	KGLOG_PROCESS_ERROR(piTabFile);

	nHeight = piTabFile->GetHeight();
	KGLOG_PROCESS_ERROR(nHeight >= 2);
    
	memset(&m_DefaultDoodadTemplate, 0, sizeof(m_DefaultDoodadTemplate));

	bRetCode = LoadDoodadTemplate(2, piTabFile, m_DefaultDoodadTemplate);
	KGLOG_PROCESS_ERROR(bRetCode);

	KG_PROCESS_SUCCESS(nHeight == 2);
    
    nDoodadCount = nHeight - 2;

	m_pDoodadTemplateList = new KDoodadTemplate[nDoodadCount];
	KGLOG_PROCESS_ERROR(m_pDoodadTemplateList);
	
	for (int i = 0; i < nDoodadCount; ++i)
	{
        memset(&DoodadTemplate, 0, sizeof(DoodadTemplate));

		bRetCode = LoadDoodadTemplate(i + 3, piTabFile, DoodadTemplate);
		KGLOG_PROCESS_ERROR(bRetCode);

		if (DoodadTemplate.m_dwTemplateID == 0)
		{
			KGLogPrintf(
                KGLOG_ERR, "[KDoodadTemplateList]Line:%d ID:(%d) in %s was repeated!",
				i + 3, DoodadTemplate.m_dwTemplateID, DOODAD_TEMPLATE_FILENAME
            );
			goto Exit0;
		}

        m_pDoodadTemplateList[i] = DoodadTemplate;
		m_mapDoodadTemplateList[DoodadTemplate.m_dwTemplateID] = m_pDoodadTemplateList + i;
	}

	m_nDoodadTemplateCount = nDoodadCount;

Exit1:
	bResult = true;
Exit0:
    if (!bResult)
    {
        SAFE_DELETE_ARRAY(m_pDoodadTemplateList);
    }
	KG_COM_RELEASE(piTabFile);
	return bResult;
}