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; }
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; }