bool CActionEffectComboMgr::load(const string& fileName, bool reload) { m_bReloadMode = reload; if (!m_bReloadMode && isLoadDone()) return true; m_strCurrentFileName = chkFileNameExt(fileName, ".actcmb"); CIni kIni; if (!kIni.openActionEffect(m_strCurrentFileName)) { WriteConErr("[ERR-ActionEffectCmb] file=%s, load failed.\r\n", m_strCurrentFileName.c_str()); return false; } string strCurTitle = ""; CActionEffectCombo* pkCurActionEffectCombo = NULL; bool bNewTitle = false; // read first title string strTitle = ""; string strLine = ""; if (kIni.readTitle(strTitle, strLine)) { checkRepeat(getFullTitle(strTitle)); strCurTitle = strTitle; pkCurActionEffectCombo = addActionEffectCombo(strTitle); bNewTitle = true; } else { if (strLine.length() > 0) WriteConErr( "[ERR-ActionEffectCmb] file=%s expecting a title, line=%s\r\n", m_strCurrentFileName.c_str(), strLine.c_str()); return false; } while (strCurTitle != "" && pkCurActionEffectCombo != NULL && kIni.readLine(strLine)) { if (kIni.isTitle(strLine)) { // meaning that we have moved to the next title, string title; kIni.parseTitle(strLine, title); checkRepeat(getFullTitle(title)); strCurTitle = title; pkCurActionEffectCombo = addActionEffectCombo(title); bNewTitle = true; } else { if (bNewTitle) { parseLineFirst(pkCurActionEffectCombo, strLine, m_strCurrentFileName); bNewTitle = false; } else { parseLine(pkCurActionEffectCombo, strLine, m_strCurrentFileName); } } } //while return true; }