Example #1
0
BOOL KQuestInfoList::Reload()
{
    BOOL        bResult     = false;
    int         nRetCode    = false;
    int         nHeight     = 0;
    ITabFile*   piTabFile   = NULL;
    char        szFilePath[MAX_PATH];
    DWORD       dwQuestID    = 0;
    KQuestInfo* pQuestInfo  = NULL;

    nRetCode = (int)snprintf(szFilePath, sizeof(szFilePath), "%s/%s", SETTING_DIR, QUEST_FILE_NAME);
    KGLOG_PROCESS_ERROR(nRetCode > 0 && nRetCode < (int)sizeof(szFilePath));

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

    nHeight = piTabFile->GetHeight();
    KGLOG_PROCESS_ERROR(nHeight > 1);

    nRetCode = LoadQuestInfo(piTabFile, 2, &m_DefaultQuestInfo);
    KGLOG_PROCESS_ERROR(nRetCode);

    m_DailyQuest.clear();
    m_RandomQuestGroup.clear();

    for (int nIndex = 3; nIndex <= nHeight; nIndex++)
    {
        KQuestInfo	TempQuestInfo;

        nRetCode = piTabFile->GetInteger(nIndex, "QuestID", m_DefaultQuestInfo.dwQuestID, (int*)&dwQuestID);
        KGLOG_PROCESS_ERROR(nRetCode);
        KGLOG_PROCESS_ERROR(dwQuestID < MAX_QUEST_COUNT);

        pQuestInfo = GetQuestInfo(dwQuestID);

        if (pQuestInfo == NULL)
            pQuestInfo = &TempQuestInfo;

        nRetCode = LoadQuestInfo(piTabFile, nIndex, pQuestInfo);
        KGLOG_PROCESS_ERROR(nRetCode);

        m_mapID2QuestInfo[dwQuestID] = *pQuestInfo;

        if (pQuestInfo->bDaily)
            m_DailyQuest.push_back(pQuestInfo->dwQuestID);
    }

    nRetCode = LoadRandomQuestGroup();
    KGLOG_PROCESS_ERROR(nRetCode);

    bResult = true;
Exit0:
    KG_COM_RELEASE(piTabFile);
    return bResult;
}
Example #2
0
BOOL KQuestInfoList::Init(void)
{
    BOOL        bResult     = false;
    int         nRetCode    = false;
    int         nHeight     = 0;
    ITabFile*   piTabFile   = NULL;
	char        szFilePath[MAX_PATH];
    std::pair<MAP_ID_2_QUEST_INFO::iterator, bool> InsRet;

	nRetCode = (int)snprintf(szFilePath, sizeof(szFilePath), "%s/%s", SETTING_DIR, QUEST_FILE_NAME);
    KGLOG_PROCESS_ERROR(nRetCode > 0 && nRetCode < (int)sizeof(szFilePath));

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

	nHeight = piTabFile->GetHeight();
	KGLOG_PROCESS_ERROR(nHeight > 1);

    memset(&m_DefaultQuestInfo, 0, sizeof(m_DefaultQuestInfo));

	nRetCode = LoadQuestInfo(piTabFile, 2, &m_DefaultQuestInfo);
	KGLOG_PROCESS_ERROR(nRetCode);

	for (int nIndex = 3; nIndex <= nHeight; nIndex++)
	{
		KQuestInfo	TempQuestInfo;

		nRetCode = LoadQuestInfo(piTabFile, nIndex, &TempQuestInfo);
		KGLOG_PROCESS_ERROR(nRetCode);

		nRetCode = MakeQuestMap(&TempQuestInfo);
        KGLOG_PROCESS_ERROR(nRetCode);

#ifdef _SERVER
        InsRet = m_mapID2QuestInfo.insert(std::make_pair(TempQuestInfo.dwQuestID, TempQuestInfo));
        KGLOG_PROCESS_ERROR(InsRet.second);
#endif
	}

    bResult = true;
Exit0:
	KG_COM_RELEASE(piTabFile);
	return bResult;
}
Example #3
0
BOOL KQuestInfoList::LoadQuestInfoByID(ITabFile* piTabFile, DWORD dwQuestID, KQuestInfo* pQuestInfo)
{
    BOOL bResult    = false;
    BOOL bRetCode   = false;
    int  nIndex     = 0;
    char szRowName[MAX_PATH];

    assert(piTabFile);
    assert(pQuestInfo);

    snprintf(szRowName, sizeof(szRowName), "%lu", dwQuestID);
    szRowName[sizeof(szRowName) - 1] = '\0';

    nIndex = piTabFile->FindRow(szRowName);
    KGLOG_PROCESS_ERROR(nIndex > 1); // 寻找到的信息肯定是在2行之后。

    bRetCode = LoadQuestInfo(piTabFile, nIndex, pQuestInfo);
    KGLOG_PROCESS_ERROR(bRetCode);

    bResult = true;
Exit0:
    return bResult;
}