void MonsterManager::EditMonster(Monster* monster) { for (int i=0; i<m_pListCtrl->GetItemCount(); ++i) { CString strID = m_pListCtrl->GetItemText(i, 0); UINT uinId = atoi(strID); Monster* pMon = this->FindMonster(uinId); if (pMon == NULL) continue; if (pMon->GetID() != monster->GetID()) continue; MONINFO& info = pMon->GetMonInfo(); int index = i; CString strTmp; strTmp.Format("[%d]%s(%d¼¶)", pMon->GetBaseID(), Misc::utf8ToGbk(pMon->getBaseName()).c_str(), pMon->GetLevel()); m_pListCtrl->SetItemText(index, 1, strTmp); // Ãû³Æ strTmp.Format("%d", info.num); m_pListCtrl->SetItemText(index, 2, strTmp); // ÊýÁ¿ strTmp.Format("%d", info.ai); m_pListCtrl->SetItemText(index, 3, strTmp); // ÖÇÄÜ strTmp.Format("%d", info.speed); m_pListCtrl->SetItemText(index, 4, strTmp); // ÒÆËÙ strTmp.Format("%d", info.view); m_pListCtrl->SetItemText(index, 5, strTmp); // ÊÓÒ° strTmp.Format("%d", info.dropInfo[0].dropType); m_pListCtrl->SetItemText(index, 6, strTmp); // BOSSµôÂä strTmp.Format("%d", info.dropInfo[0].dropId); m_pListCtrl->SetItemText(index, 7, strTmp); // µôÂä±àºÅ strTmp.Format("%d", info.dropInfo[0].dropProb); m_pListCtrl->SetItemText(index, 8, strTmp); // µôÂä¸ÅÂÊ strTmp.Format("%d", info.reviveTime); m_pListCtrl->SetItemText(index, 9, strTmp); // ¸´»îʱ¼ä } }
Void GameplayManager::_LoadGameDatabase( const GChar * strPath ) { // List everything in current path Bool bIsDirectory = false; GChar strFileName[FILENAME_LENGTH + 1]; Bool bContinue = SystemFn->ListDirectoryFirst( strPath, &bIsDirectory, strFileName, FILENAME_LENGTH ); while( bContinue ) { // Build sub path GChar strSubPath[PATHNAME_LENGTH + 1]; StringFn->Format( strSubPath, TEXT("%s/%s"), strPath, strFileName ); // Sub-directory case if ( bIsDirectory ) { // Recurse _LoadGameDatabase( strSubPath ); // Next file bContinue = SystemFn->ListDirectoryNext( &bIsDirectory, strFileName, FILENAME_LENGTH ); continue; } // File case, load XML XMLDocument * pMonsterFile = XMLDocument::CreateDocument( strSubPath ); Assert( pMonsterFile != NULL ); Assert( StringFn->Cmp(pMonsterFile->GetTagName(), TEXT("MonsterFile")) == 0 ); // Load skills const XMLNode * pSkillListNode = pMonsterFile->GetChildByTag( TEXT("SkillList"), 0 ); Assert( pSkillListNode != NULL ); UInt iCount = pSkillListNode->GetChildCount(); for ( UInt i = 0; i < iCount; ++i ) { const XMLNode * pSkillNode = pSkillListNode->GetChildByTag( TEXT("Skill"), i ); Assert( pSkillNode != NULL ); Skill * pSkill = Skill::StaticLoad( pSkillNode ); Bool bInserted = m_mapSkills.Insert( pSkill->GetID(), pSkill ); Assert( bInserted ); } // Load monsters const XMLNode * pMonsterListNode = pMonsterFile->GetChildByTag( TEXT("MonsterList"), 0 ); Assert( pMonsterListNode != NULL ); iCount = pMonsterListNode->GetChildCount(); for( UInt i = 0; i < iCount; ++i ) { XMLNode * pMonsterNode = pMonsterListNode->GetChildByTag( TEXT("Monster"), i ); Assert( pMonsterNode != NULL ); Monster hMonster; hMonster.Load( pMonsterNode ); Bool bInserted = m_mapMonsters.Insert( hMonster.GetID(), hMonster ); Assert( bInserted ); } // Done with this one XMLDocument::DestroyDocument( pMonsterFile ); pMonsterFile = NULL; // Next file bContinue = SystemFn->ListDirectoryNext( &bIsDirectory, strFileName, FILENAME_LENGTH ); } }