#include "stdafx.h" #include #ifndef C_NA_0_20100520_ACSYSTEM_CHANGED #include "util/util.h" #include "QuestEx.h" #include "AreaConquestManager.h" #include "AreaConquestInfoParser.h" #include "AreaConquest.h" #include "RewardInfoList.h" //#include "QuestInfoManagerEx.h" #include "MapInfoParser.h" #include #include #include "CSunOnline.h" #include "logic/logic.h" extern QuestInfoManager2* g_pQuestInfoManager; //#include "QuestInfoManagerEx.h" /*#include #include typedef struct _COLLECTIONITEM { int nCurrentCount; int nMaxCount; } COLLECTIONITEM; typedef std::map MapCOLLECTION; */ const int AC_NOT_REVEALED_STRING = 91043; // ¹Ì ¹ß°ß ½ºÆ®¸µ ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// /* void AreaConquestDialog::OnClickReward() { if (m_iLastRewardSendIndex) { return; } MSG_CG_AREACONQUEST_REWARD_SYN SendPacket; AreaConquestInfo *pAreaInfo = g_AreaConquest.GetAreaConquestInfo(m_iAreaIndex); SendPacket.m_byAreaIndex = m_iAreaIndex; SendPacket.m_byRewardIndex = 0; if (pAreaInfo) { for (int a = 0; a < MAX_AC_REWARD_NUM; a++) { if (!pAreaInfo->GetRewardFlag(a)) { SendPacket.m_byRewardIndex = a; break; } } } m_iLastRewardSendIndex = m_iAreaIndex; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendPacket, sizeof(SendPacket)); } */ AreaConquestManager::AreaConquestManager() { } AreaConquestManager::~AreaConquestManager() { } void AreaConquestManager::UpdateMissionInfo(MissionManager* pMissionMgr, BOOL bUpdate) { for (int a = 0; a < MAX_AC_SECTION_NUM; a++) { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(a+1); if (!pAreaInfo) { continue; } BASE_AreaConquestInfo *pTextInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(a+1); if (!pTextInfo) { continue; } MapGroup * pGroup = MapInfoParser::Instance()->GetMapGroup(pTextInfo->m_byMissionMapKind); if( !pGroup) { continue; } // pAreaInfo->SetConditionValue(eACC_MISSION_MAIN,0); // pAreaInfo->SetConditionValue(eACC_MISSION_SUB,0); // pAreaInfo->SetConditionValue(eACC_MISSION_HIDDEN,0); // // //¸ÞÀÎ ¹Ì¼Ç // sMAPINFO * pInfo = pGroup->GetMapInfoIndex(0); // if( pInfo ) // { // pAreaInfo->SetConditionValue( // eACC_MISSION_MAIN, // pMissionMgr->GetMissionPoint( (BYTE)pInfo->MapCode ) // ); // } //#if NATION_BUILD_VERSION >= 902 // for( size_t i = 0 ; i < 4 ; ++i ) // { // sMAPINFO * pInfo = pGroup->GetMapInfoIndex(i + 1); // if( !pInfo ) // { // continue; // } // // // pAreaInfo->AddConditionValue( // eACC_MISSION_SUB1 + i, // pMissionMgr->GetMissionPoint((BYTE)pInfo->MapCode)); // } //#else // for( size_t i = 1 ; i <= MAX_AC_SECTION_NUM ; ++i ) // { // sMAPINFO * pInfo = pGroup->GetMapInfoIndex(i); // if( !pInfo ) // { // continue; // } // // // pAreaInfo->AddConditionValue( // eACC_MISSION_SUB, // pMissionMgr->GetMissionPoint((BYTE)pInfo->MapCode)); // } //#endif // // // // // pAreaInfo->CalculateCurrentAchievePoint(); // ¸ÞÀι̼ǰú ¼­ºê¹Ì¼Çº° Ä«¿îÆ® ÃʱâÈ­ for (int nCondition = eACC_MISSION_MAIN; nCondition <= eACC_MISSION_SUB4; ++nCondition) { pAreaInfo->SetConditionValue(nCondition,0); } sMAPINFO * pInfo = pGroup->GetMapInfoIndex(0); if( pInfo ) { pAreaInfo->SetConditionValue(eACC_MISSION_MAIN, pMissionMgr->GetMissionPoint((BYTE)pInfo->MapCode)); } for( int i = 0 ; i < (MAX_AC_SUB_MISSION_NUM - 1) ; ++i ) { sMAPINFO * pInfo = pGroup->GetMapInfoIndex(i+1); if( !pInfo ) { continue; } pAreaInfo->SetConditionValue(eACC_MISSION_SUB1+i, pMissionMgr->GetMissionPoint((BYTE)pInfo->MapCode)); } pAreaInfo->CalculateCurrentAchievePoint(); } } void AreaConquestManager::UpdateQuestInfo(QuestManager2* pQuestManager, BOOL bUpdate) { // AC Info °¢ Áö¿ª Á¤º¸ AreaConquestInfo *pAreaInfo[MAX_AC_SECTION_NUM] = {NULL,NULL,NULL,NULL,NULL,NULL}; for (int a = 0; a < MAX_AC_SECTION_NUM; a++) { pAreaInfo[a] = GetAreaConquestInfo(a+1); if (pAreaInfo[a]) { pAreaInfo[a]->SetConditionValue(eACC_QUEST_NORMAL,0); } } // °¢ Äù½ºÆ® ¼øÈ¸ °¢ Áö¿ª AC Äù½ºÆ® ¿Ï·á Ƚ¼ö °¡»ê for(QCODE i=0;iFindComplQuest(i); if( !pComplQuest || pComplQuest->m_Num == 0 ) continue; QuestInfo * pInfo = g_pQuestInfoManager->FindQuestInfo(i); if( !pInfo ) continue; int ACCode = pInfo->GetACCode(); int QType = pInfo->GetQType(); if ( ACCode > 0 && ACCode <= MAX_AC_SECTION_NUM && QType == eQTYPE_GENERAL) { if ( pAreaInfo[(pInfo->GetACCode()-1)] ) { pAreaInfo[pInfo->GetACCode()-1]->AddConditionValue(eACC_QUEST_NORMAL); } } } // AC Info °¢ Áö¿ª ´ú¼º·ü °è»ê for (int a = 0; a < MAX_AC_SECTION_NUM; a++) if (pAreaInfo[a]) pAreaInfo[a]->CalculateCurrentAchievePoint(); /* for (int a = 0; a < MAX_AC_SECTION_NUM; a++) { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(a); if (!pAreaInfo) { continue; } pAreaInfo->SetConditionValue(eACC_QUEST_NORMAL,0); pAreaInfo->SetConditionValue(eACC_QUEST_EVENT,0); pAreaInfo->SetConditionValue(eACC_QUEST_MISSION,0); pAreaInfo->SetConditionValue(eACC_QUEST_HIDDEN,0); #ifdef __NA_001337_20090511_EXPANSION_QUEST_COMPL_NUM for(QCODE i=0; iFindComplQuest(i); if( !pComplQuest || pComplQuest->m_Num == 0 ) continue; QuestInfo * pInfo = g_pQuestInfoManager->FindQuestInfo(i); if( !pInfo ) continue; if( a == pInfo->GetACCode() ) { switch(pInfo->GetQType()) { case eQTYPE_GENERAL: { pAreaInfo->AddConditionValue(eACC_QUEST_NORMAL); } break; case eQTYPE_ELITE: { pAreaInfo->AddConditionValue(eACC_QUEST_EVENT); } break; case eQTYPE_MISSION: { pAreaInfo->AddConditionValue(eACC_QUEST_MISSION); } break; case eQTYPE_HIDDEN: { pAreaInfo->AddConditionValue(eACC_QUEST_HIDDEN); } break; } } } pAreaInfo->CalculateCurrentAchievePoint(); }*/ } void AreaConquestManager::UpdateAll(BSTR* bstrXml) { xml.Open("C:\\WOPSConfig\\SUNGMS\\decodeACStream.xml"); xml.AddElem(_T("ACSystem")); for(int iAreaIndex = 1; iAreaIndex <= MAX_AC_SECTION_NUM/*MAX_AC_MAP*/; iAreaIndex++) { if(!SetAreaIndex(iAreaIndex)) continue; xml.AddChildElem("Map"); xml.IntoElem(); UpdateEtc(); UpdateTreasure(); // º¸¹° UpdateReward(); // º¸»ó UpdateHunting(); // »ç³É UpdateCollection(); // ¼öÁýǰ UpdateBoss(); // º¸½º UpdateTowerDefense(); // Ÿ¿öµðÆæ½º UpdateQuest(); // Äù½ºÆ® UpdateBattle(); // ¹èƲ UpdateMission(); // ¹Ì¼Ç xml.OutOfElem(); } *bstrXml = _bstr_t(xml.GetDoc().c_str() ).copy(); xml.Close(); } void AreaConquestManager::CheckRewardFlag() { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); if (pAreaInfo) { for (int a = 0; a < MAX_AC_REWARD_NUM; a++) { if (!pAreaInfo->GetRewardFlag(a)) { pAreaInfo->SetReward(a,true); break; } } } } void AreaConquestManager::Init() { xml.SetModeFlag(CMarkupArchive::ArchiveModeCreate | CMarkupArchive::ArchiveModeStoring | CMarkupArchive::ArchiveModeNotZipped); SetXMLCharSet(xml); /*AreaConquest::Init(); for (int a = 0; a < MAX_AC_SECTION_NUM; a++) { AreaConquestInfo *pInfo = new AreaConquestInfo(); pInfo->Init(); SetAreaConquestInfo(a + 1,pInfo); BASE_AreaConquestInfo *pACInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(a + 1); if (pInfo && pACInfo) { pInfo->SetAllCondition(pACInfo); } }*/ AreaConquest::Init(); for (int a = 0; a < MAX_AC_SECTION_NUM; a++) { AreaConquestInfo *pInfo = new AreaConquestInfo(); pInfo->Init(); SetAreaConquestInfo(a + 1,pInfo); BASE_AreaConquestInfo *pACInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(a + 1); if (pInfo && pACInfo) { pInfo->SetAllCondition(pACInfo); } } m_fBattleGaugeSize = 100.0f; m_iLastRewardSendIndex = 0; } void AreaConquestManager::Release() { ////////////////////////////// // Area Conquset Release for (int a = 0; a < MAX_AC_SECTION_NUM; a++) { if (m_pAreaInfo[a]) { delete m_pAreaInfo[a]; m_pAreaInfo[a] = NULL; } } AreaConquest::Release(); } ////////////////////////////////////////////////////////////////////////// void AreaConquestManager::UpdateTreasure() { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if (!pAreaInfo || !pInfo) { return; } xml.AddChildElem("TreasureCategory"); xml.IntoElem(); /* int iFlag = 0; iFlag = pAreaInfo->GetConditionValue(eACC_TREASURE_KEY_FLAG); if(iFlag) { } else { } iFlag = pAreaInfo->GetConditionValue(eACC_TREASURE_BOX_FLAG); if(iFlag) { } else { } for(int a = 0; a < MAX_AC_MAP_PIECE_IMAGE; a++) { if (pAreaInfo->GetConditionValue(eACC_TREASURE_MAP_FLAG1 + a)) { } else { } }*/ if(pInfo && pAreaInfo) { TCHAR szString[128]; int iMapCount = 0; for (int a = 0; a < 8; a++) { if (pAreaInfo->GetConditionValue(eACC_TREASURE_MAP_FLAG1 + a)) { iMapCount++; } } xml.AddChildElem("Treasure"); xml.IntoElem(); GetStringByCode(pInfo->m_Piece_Scode,szString,128); //pTextMapName->SetTextWZA(szString); xml.AddChildElem("Name", szString); _stprintf(szString,"%d",iMapCount); //pTextCurMap->SetTextWZ(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"8"); //pTextMaxMap->SetTextWZ(szString); xml.AddChildElem("MaxPoint", szString); xml.OutOfElem(); xml.AddChildElem("Treasure"); xml.IntoElem(); GetStringByCode(pInfo->m_Key_Scode,szString,128); //pTextKeyName->SetTextWZA(szString); xml.AddChildElem("Name", szString); #ifdef __NA_0_AC_KEY_DIRECT_REGISTER int numKeyPieces = 0; for (int i = 0; i < 5; ++i) { if (pAreaInfo->GetConditionValue(eACC_TREASURE_KEY_FLAG1 + i)) { ++numKeyPieces; } } _stprintf(szString,"%d",numKeyPieces); #else _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_TREASURE_KEY_FLAG)); #endif //pTextCurKey->SetTextWZ(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_TREASURE_KEY_FLAG)); //pTextMaxKey->SetTextWZ(szString); xml.AddChildElem("MaxPoint", szString); xml.OutOfElem(); xml.AddChildElem("Treasure"); xml.IntoElem(); GetStringByCode(pInfo->m_TBox_Scode,szString,128); //pTextBoxName->SetTextWZA(szString); xml.AddChildElem("Name", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_TREASURE_BOX_FLAG)); //pTextCurBox->SetTextWZ(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_TREASURE_BOX_FLAG)); //pTextMaxBox->SetTextWZ(szString); xml.AddChildElem("MaxPoint", szString); xml.OutOfElem(); } xml.OutOfElem(); } void AreaConquestManager::UpdateReward() { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if (!pAreaInfo || !pInfo) return; xml.AddChildElem("RewardCategory"); xml.IntoElem(); float fPercent = pAreaInfo->GetCurrentAchievePoint(); int iStringCode = 0; TCHAR szReward[256]; for (int a = 0; a < MAX_AC_DIALOG_REWARD_MAX; a++) { if(pAreaInfo->GetRewardFlag(a)) { RewardInfo *pRewardInfo = RewardInfoList::Instance()->FindRewardInfo(pInfo->m_wAch_Rew[a]); if (pRewardInfo) { #ifdef __NA_1288_AC_RENEWAL_FOR_TIME_LINE DWORD dwTypeCode = pRewardInfo->GetTypeCode(0); BASE_ITEMINFO* ItemInfo = ItemInfoParser::Instance()->GetItemInfo(dwTypeCode); if(ItemInfo) iStringCode = ItemInfo->m_NCode; else iStringCode = 0; #else iStringCode = pRewardInfo->GetDCode(); #endif } else { iStringCode = 0; } if (fPercent >= (a + 1) * 5.0f) { GetStringByCode(iStringCode,szReward,256); } else { GetStringByCode( AC_NOT_REVEALED_STRING, szReward, 256); } if(0 != stricmp(szReward, "NULL")) { // pTextReward->SetTextWZA(szReward); xml.AddChildElem("Reward"); xml.IntoElem(); xml.AddChildElem("Name", szReward); xml.AddChildElem("CurrentPoint"); xml.AddChildElem("MaxPoint"); xml.OutOfElem(); } } } xml.OutOfElem(); } void AreaConquestManager::UpdateHunting() { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if (!pAreaInfo || !pInfo) return; xml.AddChildElem("HuntingCategory"); xml.IntoElem(); xml.AddChildElem("Hunting"); xml.IntoElem(); TCHAR szMonsterName[256]; // _stprintf(szMonsterName, // " %d / %d ", // pAreaInfo->GetConditionValue(eACC_HUNTING_KILL_CAPTAIN), // pAreaInfo->GetConditionMaxValue(eACC_HUNTING_KILL_CAPTAIN)); //pTextCaptainCount->SetTextWZA(szMonsterName); // xml.AddChildElem("Name", "ĸƾ º£±â"); xml.AddChildElem("Name", STRTBL_PARSER5->GetStringByCode(1)); xml.AddChildElemEx("CurrentPoint", pAreaInfo->GetConditionValue(eACC_HUNTING_KILL_CAPTAIN)); xml.AddChildElemEx("MaxPoint", pAreaInfo->GetConditionMaxValue(eACC_HUNTING_KILL_CAPTAIN)); xml.AddChildElem("Detail"); xml.IntoElem(); INT pos = 0; for (int a = 0; a < MAX_AC_HIDDEN_MONSTER/*MAX_AC_DIALOG_LUCKY_MONSTER_MAX*/; a++) // È÷µç¸÷ Àâ±â { int offset = a + pos; CONDITION_TEXT stText = GetLuckyMonsterConditionIndex(offset,true); if (stText.bText) { if (stText.iValue > 0) { GetStringByCode( pInfo->m_wHMK_StringC[stText.iCondition], szMonsterName, 256 ); } else { GetStringByCode( AC_NOT_REVEALED_STRING, szMonsterName,256); } } else { _stprintf(szMonsterName, ""); } if(strlen(szMonsterName) > 0 ) { xml.AddChildElem("HuntingObjects_Hidden"); xml.IntoElem(); xml.AddChildElem("Name", szMonsterName); // ÀâÀº ¸ó½ºÅͼö int iLuckyMonsterCount = stText.iValue; xml.AddChildElemEx("CurrentPoint", iLuckyMonsterCount); xml.AddChildElemEx("MaxPoint", stText.iMaxValue); xml.OutOfElem(); } } pos = 0; for (int a = 0; a < MAX_AC_LUCKY_MONSTER/*MAX_AC_DIALOG_LUCKY_MONSTER_MAX*/; a++) // ·°Å°¸÷ Àâ±â { int offset = a + pos; CONDITION_TEXT stText = GetLuckyMonsterConditionIndex(offset,false); if (stText.bText) { if (stText.iValue > 0) { GetStringByCode( pInfo->m_wLMK_StringC[stText.iCondition], szMonsterName, 256 ); } else { GetStringByCode( AC_NOT_REVEALED_STRING, szMonsterName,256); //_stprintf(szMonsterName,"????"); } } else { _stprintf(szMonsterName, ""); } //pTextMonsterName->SetTextWZA(szMonsterName); if(strlen(szMonsterName) > 0 ) { xml.AddChildElem("HuntingObjects_Lucky"); xml.IntoElem(); xml.AddChildElem("Name", szMonsterName); // ÀâÀº ¸ó½ºÅͼö int iLuckyMonsterCount = stText.iValue; xml.AddChildElemEx("CurrentPoint", iLuckyMonsterCount); xml.AddChildElemEx("MaxPoint", stText.iMaxValue); xml.OutOfElem(); } // 10°³ÀÇ ¸ó½ºÅÍ ¹öưµé /* int imageindex = 0; for (int b = 0; b < 10; b++) { if (b < iLuckyMonsterCount) { imageindex = pInfo->m_wLMK_ImgC[stText.iCondition]; } else { imageindex = 0; } // SetControlImage(pButtonMonster,imageindex,14,14); } */ } xml.OutOfElem(); // Detail xml.OutOfElem(); // Hunting xml.OutOfElem(); // HuntingCategory } void AreaConquestManager::UpdateCollection() { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if(!pAreaInfo || !pInfo) return; xml.AddChildElem("CollectionCategory"); xml.IntoElem(); // MapCOLLECTION mapCollection; TCHAR szItemName[256]; CONDITION_TEXT2 stText; int pos = 0; for (int a = 0; a < MAX_AC_DIALOG_ITEM_MAX; a++) { int offset = a + pos; int iItemCount = 0; int iItemKind = eACC_NONE; stText = GetItemConditionIndex(offset); switch (stText.iType) { case eACC_STORY: { if (stText.bText) { if (stText.iValue > 0) { GetStringByCode(pInfo->m_bSI_Scode[stText.iCondition],szItemName,256); } else { GetStringByCode(AC_NOT_REVEALED_STRING,szItemName,256); //_stprintf(szItemName,"????"); } } else { _stprintf(szItemName,""); } //pTextCollectionName->SetTextWZA(szItemName); } break; case eACC_HIDDEN: { if (stText.bText) { if (stText.iValue > 0) { GetStringByCode(pInfo->m_bHI_Scode,szItemName,256); } else { GetStringByCode(AC_NOT_REVEALED_STRING,szItemName,256); //_stprintf(szItemName,"????"); } } else { _stprintf(szItemName,""); } // pTextCollectionName->SetTextWZA(szItemName); } break; case eACC_TREASURE: { BOOL bTest = FALSE; for (int test = 0; test < MAX_AC_TREASURE_IMAGE; test++) { #ifdef __NA_0_AC_KEY_DIRECT_REGISTER if (pAreaInfo->GetConditionValue(eACC_TREASURE_KEY_FLAG1 + test)) #else if (pAreaInfo->GetConditionValue(eACC_TREASURE_ITEM_FLAG1 + test)) #endif { bTest = TRUE; break; } } if (bTest) { GetStringByCode(pInfo->m_Tresure_Scode,szItemName,256); } else { GetStringByCode( AC_NOT_REVEALED_STRING,szItemName,256); //_stprintf(szItemName,"????"); } // pTextCollectionName->SetTextWZA(szItemName); } break; case eACC_SPECIAL: { BOOL bTest = FALSE; for (int test = 0; test < MAX_AC_SPECIAL_PRODUCT_IMAGE; test++) { if (pAreaInfo->GetConditionValue(eACC_TREASURE_SPECIALTY_FLAG1 + test)) { bTest = TRUE; break; } } if (bTest) { GetStringByCode(pInfo->m_Spe_Scode,szItemName,256); } else { GetStringByCode(AC_NOT_REVEALED_STRING,szItemName,256); //_stprintf(szItemName,"????"); } // pTextCollectionName->SetTextWZA(szItemName); } break; } if(strlen(szItemName) > 0 ) { xml.AddChildElem("Collection"); xml.IntoElem(); xml.AddChildElem("Name", szItemName); xml.AddChildElemEx("CurrentPoint", stText.iValue); int maxCount = stText.iMaxValue; // if(stText.iValue%10) // maxCount = (floor( (float)(stText.iValue/10)+1) )*10; // else // maxCount = (floor( (float)(stText.iValue/10) ) )*10; xml.AddChildElemEx("MaxPoint", maxCount); xml.OutOfElem(); } ZeroMemory(szItemName, 256); // std::string str = szItemName; // MapCOLLECTION::iterator iter = mapCollection.find(str); // // COLLECTIONITEM* pColl = NULL; // if(mapCollection.end() == iter) // { // COLLECTIONITEM Coll; // Coll.nCurrentCount = 0; // Coll.nMaxCount = 0; // mapCollection[str] = Coll; // // pColl = &mapCollection[str]; // } // else // pColl = &(iter->second); // // pColl->nCurrentCount += stText.iValue; // pColl->nMaxCount += 10; // 10°³ÀÇ ÄÝ·¢¼Ç ¹öưµé /*for (int b = 0; b < 10; b++) { int imageindex = 0; switch (stText.iType) { case eACC_STORY: { if (b < stText.iValue) { imageindex = pInfo->m_wSI_ImgC[stText.iCondition]; } } break; case eACC_HIDDEN: { if (b < stText.iValue) { imageindex = pInfo->m_wHI_ImgC; } } break; case eACC_TREASURE: { if (b < MAX_AC_TREASURE_IMAGE) { if (pAreaInfo->GetConditionValue(eACC_TREASURE_ITEM_FLAG1 + b)) { imageindex = pInfo->m_wTresureImgC[b]; } } } break; case eACC_SPECIAL: { if (b < MAX_AC_SPECIAL_PRODUCT_IMAGE) { if (pAreaInfo->GetConditionValue(eACC_TREASURE_SPECIALTY_FLAG1 + b)) { imageindex = pInfo->m_wSpeImgC[b]; } } } break; } // SetControlImage(pButtonItem,imageindex,38,38); } */ } // for (int a = 0; a < MAX_AC_DIALOG_ITEM_MAX; a++) //////////////////////////////////////////// /* for(MapCOLLECTION::iterator iter = mapCollection.begin(); iter != mapCollection.end(); iter++) { xml.AddChildElem("Collection"); xml.IntoElem(); xml.AddChildElem("Name", iter->first.c_str() ); xml.AddChildElemEx("CurrentPoint", iter->second.nCurrentCount); xml.AddChildElemEx("MaxPoint", iter->second.nMaxCount); xml.OutOfElem(); } */ xml.OutOfElem(); } void AreaConquestManager::UpdateBoss() { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if (!pAreaInfo || !pInfo) return; xml.AddChildElem("BossCategory"); TCHAR szString[256]; _stprintf(szString,"%d%%",pInfo->m_wHMK_Achievement[0]); //pTextPercent1->SetTextWZA(szString); _stprintf(szString,"%d%%",pInfo->m_wHMK_Achievement[1]); //pTextPercent2->SetTextWZA(szString); int imageindex = 0; if (!pAreaInfo->GetConditionValue(eACC_HUNTING_KILL_HIDDENBOSS1)) //if (pAreaInfo->GetCurrentAchievePoint() < pInfo->m_wHMK_Achievement[0]) { imageindex = pInfo->m_wHMK_ImgC_Off[0]; } else { imageindex = pInfo->m_wHMK_ImgC_On[0]; } // SetControlImage(pPictureBoss1,imageindex,164,154); if (!pAreaInfo->GetConditionValue(eACC_HUNTING_KILL_HIDDENBOSS2)) { imageindex = pInfo->m_wHMK_ImgC_Off[1]; } else { imageindex = pInfo->m_wHMK_ImgC_On[1]; } // SetControlImage(pPictureBoss2,imageindex,167,162); // DIALOG_BOSS_TEXT_NAME1 if (pAreaInfo->GetCurrentAchievePoint() < pInfo->m_wHMK_Achievement[0]) { GetStringByCode(AC_NOT_REVEALED_STRING,szString,256); } else { GetStringByCode(pInfo->m_wHMK_StringC[0],szString,256); } // pTextName1->SetTextWZA(szString); // DIALOG_BOSS_TEXT_NAME2 if (pAreaInfo->GetCurrentAchievePoint() < pInfo->m_wHMK_Achievement[1]) { GetStringByCode(AC_NOT_REVEALED_STRING,szString,256); } else { GetStringByCode(pInfo->m_wHMK_StringC[1],szString,256); } // pTextName2->SetTextWZ(szString); } void AreaConquestManager::UpdateTowerDefense() { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if(!pAreaInfo || !pInfo) return; xml.AddChildElem("TowerDefenseCategory"); TCHAR szString[256] = {0}; // CCtrlStaticWZ *pTextTitle = (CCtrlStaticWZ *)GetControlWZ(m_wzId[DIALOG_M006]); // CCtrlPictureWZ *pPictureTower = (CCtrlPictureWZ *)GetControlWZ(m_wzId[DIALOG_TOWER_PICTURE]); // CCtrlStaticWZ *pTextPercent = (CCtrlStaticWZ *)GetControlWZ(m_wzId[DIALOG_TOWER_TEXT_PERCENT]); // CCtrlStaticWZ *pTextCondition = (CCtrlStaticWZ *)GetControlWZ(m_wzId[DIALOG_TOWER_TEXT_CONDITION]); GetStringByCode(AC_NOT_REVEALED_STRING,szString,256); // DIALOG_TOWER_TEXT_PERCENT // pTextPercent->SetTextWZ(szString); // DIALOG_TOWER_TEXT_CONDITION // pTextCondition->SetTextWZ(szString); // DIALOG_M006 // pTextTitle->SetTextWZ(szString); } void AreaConquestManager::UpdateQuest() { // ÃÊ±Þ Áß±Þ Á¤¿¹ ·¹¾î ¼ø¼­´Ù. AreaConquestInfo * pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo * pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if(!pAreaInfo || !pInfo) return; xml.AddChildElem("QuestCategory"); xml.IntoElem(); TCHAR szString[256]; for (int a = 0; a < MAX_AC_QUEST_CATEGORY; a++) { xml.AddChildElem("Quest"); xml.IntoElem(); switch(a) { case eACQ_NORMAL: { xml.AddChildElem("Name", STRTBL_PARSER5->GetStringByCode(2)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_QUEST_NORMAL)); // pTextClearCount->SetTextWZA(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_QUEST_NORMAL)); xml.AddChildElem("MaxPoint", szString); } break; case eACQ_MISSION: { xml.AddChildElem("Name", STRTBL_PARSER5->GetStringByCode(3)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_QUEST_MISSION)); // pTextClearCount->SetTextWZA(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_QUEST_MISSION)); xml.AddChildElem("MaxPoint", szString); } break; case eACQ_ELITE: { xml.AddChildElem("Name", STRTBL_PARSER5->GetStringByCode(4)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_QUEST_EVENT)); // pTextClearCount->SetTextWZA(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_QUEST_EVENT)); xml.AddChildElem("MaxPoint", szString); } break; case eACQ_HIDDEN: { xml.AddChildElem("Name", STRTBL_PARSER5->GetStringByCode(5)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_QUEST_HIDDEN)); // pTextClearCount->SetTextWZA(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_QUEST_HIDDEN)); xml.AddChildElem("MaxPoint", szString); } break; } xml.OutOfElem(); } xml.OutOfElem(); } void AreaConquestManager::UpdateBattle() { // PVP, UP , ±æµåÀü , °¡ÀÌ´ø½º ¿µ¿õ , ¹«Â÷º°Á¸ , ¾ÆÀÌÅÛ ¸¶½ºÅÍ , ¸ó½ºÅÍ ¸¶½ºÅÍÀÇ ¼ø¼­´Ù AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if(!pAreaInfo || !pInfo) return; xml.AddChildElem("BattleCategory"); xml.IntoElem(); TCHAR szString[256]; for (int a = 0; a < MAX_AC_BATTLE_CATEGORY; a++) { xml.AddChildElem("Battle"); xml.IntoElem(); // CCtrlStaticWZ *pTextCategory = (CCtrlStaticWZ *)GetControlWZ(m_wzId[DIALOG_BATTLE_TEXT_CATEGORY1 + a]); // CCtrlStaticWZ *pTextClearCount = (CCtrlStaticWZ *)GetControlWZ(m_wzId[DIALOG_BATTLE_TEXT_COUNT1 + a]); // CCtrlPictureWZ *pPictureGuage= (CCtrlPictureWZ *)GetControlWZ(m_wzId[DIALOG_BATTLE_PICTURE_GUAGE1 + a]); // RECT rect; // rect = pPictureGuage->GetSizeRect(); float width ; // float height = (float)pPictureGuage->GetSize().bottom; if (m_fBattleGaugeSize >= 0.0f ) { switch(a) { case eACB_ITEM_MASTER: width = m_fBattleGaugeSize * pAreaInfo->GetItemMasterRatio(); break; case eACB_MONSTER_MASTER: width = m_fBattleGaugeSize * pAreaInfo->GetMonsterMasterRatio(); break; default: width = m_fBattleGaugeSize * pAreaInfo->GetConditionRatio(eACC_BATTLE_COMPETITIVE_HUNTING + a); break; } // pPictureGuage->MoveWindowWZ( (float)rect.left, (float)rect.top, width, height ); } if (width > 0.0f) { const int StringIndex = 91081; GetStringByCode(StringIndex + a, szString,256); } else { GetStringByCode(AC_NOT_REVEALED_STRING,szString,256); //_stprintf(szString,"????"); } // pTextCategory->SetTextWZ(szString); xml.AddChildElem("Name", szString); xml.AddChildElemEx("CurrentPoint", width); xml.AddChildElemEx("MaxPoint", 100); // ¼öÄ¡ »­ //_stprintf(szString," "); // pTextClearCount->SetTextWZA(szString); xml.OutOfElem(); } xml.OutOfElem(); } void AreaConquestManager::UpdateMission() { /* AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if(!pAreaInfo || !pInfo) return; xml.AddChildElem("MissionCategory"); xml.IntoElem(); DWORD dwMissionCondition[] = { eACC_MISSION_CURSE_TOWER, eACC_MISSION_MAIN, eACC_MISSION_SUB1, eACC_MISSION_SUB2, eACC_MISSION_SUB3, eACC_MISSION_SUB4, }; int pos = 0; TCHAR szString[256]; for (int a = 1; a < MAX_AC_MISSION_CATEGORY; a++) { int AC_CONDITION_CATEGORY = (a - 1) + pos; //if (pTextCategory && pTextClearCount && pTextMaxCount) { int nValue = 0; float fPercentage = 0.0f; nValue = pAreaInfo->GetConditionMaxValue(dwMissionCondition[AC_CONDITION_CATEGORY]); fPercentage = pAreaInfo->GetConditionMaxPercentage(dwMissionCondition[AC_CONDITION_CATEGORY]); //if (fPercentage > 0.0f && nValue) { xml.AddChildElem("Mission"); xml.IntoElem(); _stprintf(szString,_T("%d"),nValue); //pTextMaxCount->SetTextWZ(szString); xml.AddChildElem("MaxPoint", szString); _stprintf(szString,_T("%d"),pAreaInfo->GetConditionValue(dwMissionCondition[AC_CONDITION_CATEGORY])); //pTextClearCount->SetTextWZ(szString); xml.AddChildElem("CurrentPoint", szString); // ¹Ì¼Ç¸í Ãâ·Â int nNCode = 0; if (dwMissionCondition[AC_CONDITION_CATEGORY] == eACC_MISSION_CURSE_TOWER) { nNCode = 90165 + (m_iAreaIndex >= 5 ? 4 : (m_iAreaIndex - 1) ); } else { MapGroup* pMap = MapInfoParser::Instance()->GetMapGroup(m_iAreaIndex); if (pMap) { sMAPINFO* pMapInfo = pMap->GetMapInfoIndex(AC_CONDITION_CATEGORY - 1); if (pMapInfo) { nNCode = pMapInfo->dwNCode; } } } //g_InterfaceManager.GetInterfaceString(nNCode, szString, INTERFACE_STRING_LENGTH-1); //pTextCategory->SetTextWZ(szString); GetStringByCode(nNCode,szString,256); xml.AddChildElem("Name", szString); xml.OutOfElem(); } } } xml.OutOfElem(); */ AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if(!pAreaInfo || !pInfo) return; xml.AddChildElem("MissionCategory"); xml.IntoElem(); TCHAR szString[256]; ////////////////0902 #if NATION_BUILD_VERSION >= 902 xml.AddChildElem("Mission"); xml.IntoElem(); //youngmoon Çѱ۷Π¸ÞÀÎ Äù½ºÆ® Çϵå ÄÚµù µÇ¾îÀִ°Š½ºÆ®¸µÅ×ÀÌºí¿¡¼­ Àеµ·Ï ¼öÁ¤ GetStringByCode(1666,szString, 256 ); xml.AddChildElem("Name", STRTBL_PARSER1->GetStringByCode(1666)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_QUEST_NORMAL)); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_QUEST_NORMAL)); xml.AddChildElem("MaxPoint", szString); xml.OutOfElem(); xml.AddChildElem("Mission"); xml.IntoElem(); GetStringByCode(90164 + (m_iAreaIndex > 5 ? 5 : m_iAreaIndex),szString, 256 ); xml.AddChildElem("Name", szString);//STRTBL_PARSER1->GetStringByCode(90164 + (m_iAreaIndex > 5 ? 5 : m_iAreaIndex) )); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_MISSION_CURSE_TOWER)); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_MISSION_CURSE_TOWER)); xml.AddChildElem("MaxPoint", szString); xml.OutOfElem(); for( int i = 0 ; i < MAX_AC_SUB_MISSION_NUM ; ++i ) //¸ÞÀÎ(1) + ¼­ºê ¹Ì¼ÇÀÇ ÇÕ°è´Â 5 { MapGroup* pMap = MapInfoParser::Instance()->GetMapGroup(m_iAreaIndex); if(pMap) { sMAPINFO* pMapInfo = pMap->GetMapInfoIndex(i); if(pMapInfo) { xml.AddChildElem("Mission"); xml.IntoElem(); GetStringByCode(pMapInfo->dwNCode,szString, 256 ); xml.AddChildElem("Name", szString);//STRTBL_PARSER1->GetStringByCode(pMapInfo->dwNCode)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(i == 0 ? eACC_MISSION_MAIN : eACC_MISSION_SUB1 + i - 1)); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(i == 0 ? eACC_MISSION_MAIN : eACC_MISSION_SUB1 + i - 1)); xml.AddChildElem("MaxPoint", szString); xml.OutOfElem(); } } } #else // 90165 ÀúÁÖ¹ÞÀºÅ¾ ´ëÁöÀǽ÷à //90166 ÀúÁÖ¹ÞÀºÅ¾ ¹°Àǽ÷à //90167 ÀúÁÖ¹ÞÀºÅ¾ ºÒÀǽ÷à //90168 ÀúÁÖ¹ÞÀºÅ¾ ¹Ù¶÷Àǽ÷à //90169 ÀúÁÖ¹ÞÀºÅ¾ ¾ÏÈæÀǽ÷à /////////////////////////////// for (int a = 0; a < MAX_AC_MISSION_CATEGORY; a++)// ¹Ì¼ÇÀÌ 3°³ ÀÌ»óÀε¥ 3°³¸¸ º¸ÀÌ°Ô µÇ¾îÀÖ´Ù. { xml.AddChildElem("Mission"); xml.IntoElem(); // CCtrlStaticWZ *pTextCategory = // (CCtrlStaticWZ *)GetControlWZ(m_wzId[DIALOG_MISSION_TEXT_CATEGORY1 + a]); // CCtrlStaticWZ *pTextClearCount = // (CCtrlStaticWZ *)GetControlWZ(m_wzId[DIALOG_MISSION_TEXT_CLEARCOUNT1 + a]); // CCtrlStaticWZ *pTextMaxCount = // (CCtrlStaticWZ *)GetControlWZ(m_wzId[DIALOG_MISSION_TEXT_MAXCOUNT1 + a]); switch (a) { case eACM_MAIN: { xml.AddChildElem("Name", STRTBL_PARSER5->GetStringByCode(6)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_MISSION_MAIN)); // pTextClearCount->SetTextWZA(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_MISSION_MAIN)); // pTextMaxCount->SetTextWZA(szString); xml.AddChildElem("MaxPoint", szString); } break; case eACM_SUB: { xml.AddChildElem("Name", STRTBL_PARSER5->GetStringByCode(7)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_MISSION_SUB)); // pTextClearCount->SetTextWZA(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_MISSION_SUB)); // pTextMaxCount->SetTextWZA(szString); xml.AddChildElem("MaxPoint", szString); } break; case eACM_HIDDEN: { xml.AddChildElem("Name", STRTBL_PARSER5->GetStringByCode(8)); _stprintf(szString,"%d",pAreaInfo->GetConditionValue(eACC_MISSION_HIDDEN)); // pTextClearCount->SetTextWZA(szString); xml.AddChildElem("CurrentPoint", szString); _stprintf(szString,"%d",pAreaInfo->GetConditionMaxValue(eACC_MISSION_HIDDEN)); // pTextMaxCount->SetTextWZA(szString); xml.AddChildElem("MaxPoint", szString); } break; } xml.OutOfElem(); } #endif xml.OutOfElem(); } void AreaConquestManager::UpdateEtc() { ///////////////////////////////////// // xml.AddChildElem("Description"); xml.IntoElem(); xml.AddChildElemEx("Index", m_iAreaIndex); AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); float fAchivePoint = 0.0f; if (pAreaInfo) { fAchivePoint = pAreaInfo->CalculateCurrentAchievePoint(); //´Þ¼º·ü ´Þ¸£°Ô º¸Àδ٠} TCHAR szMessage[256]; TCHAR szText2[256]; _stprintf(szMessage,"%.2f%%", fAchivePoint); xml.AddChildElemEx("TotalPoint", fAchivePoint); BASE_AreaConquestInfo *pACInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if(pACInfo) { GetStringByCode(pACInfo->m_wACNCode,szMessage,256); // pTextCurArea->SetTextWZ(szMessage); } //_stprintf(szText2,m_szAreaFormat,szMessage); //pTextAreaName->SetTextWZ(szText2); xml.AddChildElem("Name", szMessage); //_stprintf(szText2,m_szRewardFormat,szMessage); //pTextRewardText->SetTextWZ(szText2); xml.OutOfElem(); } bool AreaConquestManager::SetAreaIndex(int index) { m_iAreaIndex = index; m_iMaxLuckyMonsterLineCount = 0; m_iMaxStoryItemLineCount = 0; m_iHiddenItemLineCount = 0; m_iTreasureItem = 0; m_iSpecialItem = 0; AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); if(!pInfo) { return false; } for (int a = 0; a < MAX_AC_LUCKY_MONSTER; a++) { if (pInfo->m_wLMK_StringC[a]) { int iCount = pInfo->m_bLMK_MaxPt[a]; while (iCount > 0) { m_iMaxLuckyMonsterLineCount++; iCount -= 10; } } } for (int a = 0; a < MAX_AC_STORY_ITEM; a++) { if (pInfo->m_bSI_Scode[a]) { int iCount = pInfo->m_bSI_Max[a]; while (iCount > 0) { m_iMaxStoryItemLineCount++; iCount -= 10; } } } if (pInfo->m_bHI_Scode) { int iCount = pInfo->m_bHI_Max; while (iCount > 0) { m_iHiddenItemLineCount++; iCount -= 10; } } if (pInfo->m_Tresure_Scode) { m_iTreasureItem = 1; } if (pInfo->m_Spe_Scode) { m_iSpecialItem = 1; } return true; } ////////////////////////////////////////////////////////////////////////// CONDITION_TEXT AreaConquestManager::GetLuckyMonsterConditionIndex(int offset, bool bHidden) { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); int iStart = 0; CONDITION_TEXT stText; stText.iCondition = 0; stText.iValue = 0; stText.bText = FALSE; stText.iMaxValue = 0; int nCount = 0; if(bHidden) { nCount = MAX_AC_HIDDEN_MONSTER; } else { nCount = MAX_AC_LUCKY_MONSTER; } for (int a = 0; a < nCount; a++) { if (pInfo->m_wLMK_StringC[a]) { int iCount = pInfo->m_bLMK_MaxPt[a]; int iValue = 0; if(bHidden) { iValue = pAreaInfo->GetConditionValue(eACC_HUNTING_KILL_HIDDENBOSS1 + a); } else { iValue = pAreaInfo->GetConditionValue(eACC_HUNTING_KILL_LUCKYMONSTER1 + a); } stText.bText = TRUE; stText.iMaxValue = iCount; while (iCount > 0) { if (iStart == offset) { stText.iCondition = a; stText.iValue = iValue; if (stText.iValue < 0) { stText.iValue = 0; } return stText; } iCount -= 10; iValue -= 10; iStart++; stText.bText = FALSE; } } } return stText; } CONDITION_TEXT2 AreaConquestManager::GetItemConditionIndex(int offset) { AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(m_iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(m_iAreaIndex); int iStart = 0; CONDITION_TEXT2 stText; stText.iType = eACC_NONE; stText.iCondition = 0; stText.iValue = 0; stText.bText = FALSE; stText.iMaxValue = 0; for (int a = 0; a < MAX_AC_STORY_ITEM; a++) { if (pInfo->m_bSI_Scode[a]) { int iCount = pInfo->m_bSI_Max[a]; int iValue = pAreaInfo->GetConditionValue(eACC_COLLECTING_ITEM1 + a); int iMaxValue = iCount; stText.bText = TRUE; stText.iMaxValue = iMaxValue; while (iCount > 0) { if (iStart == offset) { stText.iType = eACC_STORY; stText.iCondition = a; stText.iValue = iValue; if (stText.iValue < 0) { stText.iValue = 0; } return stText; } iCount -= 10; iValue -= 10; iStart++; stText.bText = FALSE; } } } if (pInfo->m_bHI_Scode) { int iCount = pInfo->m_bHI_Max; int iValue = pAreaInfo->GetConditionValue(eACC_COLLECTING_HIDDEN_ITEM); int iMaxValue = iCount; stText.bText = TRUE; stText.iMaxValue = iMaxValue; while (iCount > 0) { if (iStart == offset) { stText.iType = eACC_HIDDEN; stText.iCondition = 0; stText.iValue = iValue; if (stText.iValue < 0) { stText.iValue = 0; } return stText; } iCount -= 10; iValue -= 10; stText.bText = FALSE; iStart++; } } if (pInfo->m_Tresure_Scode) { stText.bText = TRUE; if (iStart == offset) { stText.iType = eACC_TREASURE; stText.iCondition = 0; stText.iValue = 0; return stText; } iStart++; } if (pInfo->m_Spe_Scode) { stText.bText = TRUE; if (iStart == offset) { stText.iType = eACC_SPECIAL; stText.iCondition = 0; stText.iValue = 0; return stText; } iStart++; } return stText; } ////////////////////////////////////////////////////////////////////////// BOOL AreaConquestManager::CompileACStream(BSTR bstrXml) { USES_CONVERSION; std::string tmpStr; ConvertBSTRToString(bstrXml,tmpStr); CMarkupArchive xml(CMarkupArchive::ArchiveModeNotZipped | CMarkupArchive::ArchiveModeString); xml.OpenString(tmpStr.c_str()); // WriteToFile("C:\\WOPSConfig\\SUNGMS\\zzz.xml", (BYTE*)tmpStr.c_str(), tmpStr.size()+1); CHECK(xml.FindElem(_T("ACSystem")), "ACSystem"); //Inventory¸¦ XML½ºÆ®¸µ¿¡¼­ ã´Â´Ù. for(int iAreaIndex =1; iAreaIndex <= MAX_AC_SECTION_NUM; iAreaIndex++) { std::string str; DWORD dwCount; if(!xml.FindChildElem(_T("Map")) ) break; xml.IntoElem(); ///////////////////////// // Description ///////////////////////// CHECK(xml.FindChildElem(_T("Description")),"Description"); AreaConquestInfo *pAreaInfo = GetAreaConquestInfo(iAreaIndex); BASE_AreaConquestInfo *pInfo = AreaConquestInfoParser::Instance()->GetAreaConquestInfo(iAreaIndex); ///////////////////////////////// // Reset all Values for( int i = 0 ; i < MAX_AC_STORY_ITEM_NUM ; ++i ) { pAreaInfo->SetConditionValue( eACC_COLLECTING_ITEM1+i, 0); } for (int a = 0; a < 8; a++) { pAreaInfo->SetConditionValue(eACC_TREASURE_MAP_FLAG1 + a, 0); // ¸ÊÁ¶°¢ ¸ðÀ½. } #ifdef __NA_0_AC_KEY_DIRECT_REGISTER for (int i = 0; i < 5; ++i) { pAreaInfo->SetConditionValue(eACC_TREASURE_KEY_FLAG1 + i, 0); // ¿­¼èÁ¶°¢ ¸ðÀ½ } #endif pAreaInfo->SetConditionValue(eACC_TREASURE_KEY_FLAG, 0); pAreaInfo->SetConditionValue(eACC_TREASURE_BOX_FLAG, 0); for (int a = 0; a < MAX_AC_REWARD_NUM; a++) { pAreaInfo->SetReward(a, false); } pAreaInfo->SetConditionValue(eACC_HUNTING_KILL_CAPTAIN, 0); // ĸƾ ¸ó½ºÅÍ for (int a = 0; a < MAX_AC_HIDDEN_MONSTER; a++) //È÷µç ¸ó½ºÅÍ { pAreaInfo->SetConditionValue(eACC_HUNTING_KILL_HIDDENBOSS1 + a, 0); } for (int a = 0; a < MAX_AC_LUCKY_MONSTER; a++) //·°Å° ¸ó½ºÅÍ { pAreaInfo->SetConditionValue(eACC_HUNTING_KILL_LUCKYMONSTER1 + a, 0); } ///////////////////////// // TreasureCategory ///////////////////////// CHECK(xml.FindChildElem(_T("TreasureCategory")),"TreasureCategory"); xml.IntoElem(); DWORD dwTreasurePoint[3]; for(int n = 0; n < 3; n++) { xml.FindChildElem(_T("Treasure")); xml.IntoElem(); CHECK(xml.FindGetChildData(_T("CurrentPoint"), dwTreasurePoint[n]),"CurrentPoint"); xml.OutOfElem(); } int iMapCount = dwTreasurePoint[0]; for (int a = 0; a < iMapCount; a++) { pAreaInfo->SetConditionValue(eACC_TREASURE_MAP_FLAG1 + a, true); // ¸ÊÁ¶°¢ ¸ðÀ½. } #ifdef __NA_0_AC_KEY_DIRECT_REGISTER // ÀÏ´Ü ¸ÊÁ¶°¢ ¸ðÀ½Ã³·³ ³Ö±ä ÇÏÁö¸¸.. // °°Àº ¼ö¶óµµ ¾î¶² Á¶°¢À» ¸ð¾Ò´ÂÁö¿¡ ´ëÇÑ Á¤º¸°¡ ¸®¼ÂµÇ¾î ¹ö¸®´Â ³í¸®Àû ¿À·ù°¡ ÀÖÀ½ // XML µ¥ÀÌÅ͸¦ ¼öÁ¤Çϱâ Àü¿£ GM Åø¿¡¼­ ÀÌ ±â´ÉÀ» ¾²´Â °Í ÀÚü°¡ À§ÇèÇÔ int numKeyPieces = dwTreasurePoint[1]; for (int i = 0; i < numKeyPieces; ++i) { pAreaInfo->SetConditionValue(eACC_TREASURE_KEY_FLAG1 + i, true); // ¿­¼èÁ¶°¢ ¸ðÀ½ //¿­¼èÁ¶°¢ ¿À·ù ¼öÁ¤ eACC_TREASURE_MAP_FLAG1 => eACC_TREASURE_KEY_FLAG1 } #else pAreaInfo->SetConditionValue(eACC_TREASURE_KEY_FLAG, dwTreasurePoint[1]); #endif pAreaInfo->SetConditionValue(eACC_TREASURE_BOX_FLAG, dwTreasurePoint[2]); xml.OutOfElem(); // _LOG("CompileACStream #TreasureCategory"); ///////////////////////// // RewardCategory ///////////////////////// CHECK(xml.FindChildElem(_T("RewardCategory")),"RewardCategory"); xml.IntoElem(); for (int a = 0; a < MAX_AC_DIALOG_REWARD_MAX; a++) { if(!xml.FindChildElem(_T("Reward")) ) break; xml.IntoElem(); CHECK(xml.FindGetChildData(_T("Name"), str),"Name"); xml.OutOfElem(); if( 0 == _stricmp(str.c_str(), "¹ÌÈ®ÀÎ") ) continue; else { pAreaInfo->SetReward(a, true); // _LOG(" SetReward %d -> TRUE", a); } } xml.OutOfElem(); // _LOG("CompileACStream #RewardCategory"); ///////////////////////// // HuntingCategory ///////////////////////// CHECK(xml.FindChildElem(_T("HuntingCategory")),"HuntingCategory"); xml.IntoElem(); xml.FindChildElem(_T("Hunting")); xml.IntoElem(); CHECK(xml.FindGetChildData(_T("Name"), str),"Name"); CHECK(xml.FindGetChildData(_T("CurrentPoint"), dwCount),"CurrentPoint"); pAreaInfo->SetConditionValue(eACC_HUNTING_KILL_CAPTAIN, dwCount); // ĸƾ ¸ó½ºÅÍ CHECK(xml.FindGetChildData(_T("MaxPoint"), dwCount),"MaxPoint"); pAreaInfo->SetConditionMaxValue(eACC_HUNTING_KILL_CAPTAIN, dwCount); // ĸƾ ¸ó½ºÅÍ // _LOG(" eACC_HUNTING_KILL_CAPTAIN %d", dwCount); xml.FindChildElem(_T("Detail")); xml.IntoElem(); // È÷µç ¸ó½ºÅÍ for (int a = 0; a < MAX_AC_HIDDEN_MONSTER; a++) { if(!xml.FindChildElem(_T("HuntingObjects_Hidden")) ) break; xml.IntoElem(); CHECK(xml.FindGetChildData(_T("CurrentPoint"), dwCount),"CurrentPoint"); xml.OutOfElem(); pAreaInfo->SetConditionValue(eACC_HUNTING_KILL_HIDDENBOSS1 + a, dwCount); } // ·°Å° ¸ó½ºÅÍ for (int a = 0; a < MAX_AC_LUCKY_MONSTER; a++) { if(!xml.FindChildElem(_T("HuntingObjects_Lucky")) ) break; xml.IntoElem(); CHECK(xml.FindGetChildData(_T("CurrentPoint"), dwCount),"CurrentPoint"); xml.OutOfElem(); pAreaInfo->SetConditionValue(eACC_HUNTING_KILL_LUCKYMONSTER1 + a, dwCount); } xml.OutOfElem(); // Detail xml.OutOfElem(); // Hunting xml.OutOfElem(); // HuntingCategory // _LOG("CompileACStream #HuntingCategory"); ///////////////////////// // CollectionCategory ///////////////////////// CHECK(xml.FindChildElem(_T("CollectionCategory")),"CollectionCategory"); xml.IntoElem(); for(int a = 0; a < MAX_AC_STORY_ITEM_NUM; a++) { xml.FindChildElem(_T("Collection")); xml.IntoElem(); CHECK(xml.FindGetChildData(_T("Name"), str),"Name"); CHECK(xml.FindGetChildData(_T("CurrentPoint"), dwCount),"CurrentPoint"); xml.OutOfElem(); // if( 0 == _stricmp(str.c_str(), "¹ÌÈ®ÀÎ") ) // continue; pAreaInfo->SetConditionValue( eACC_COLLECTING_ITEM1+a, dwCount); } xml.OutOfElem(); // _LOG("CompileACStream #CollectionCategory"); ///////////////////////// // BossCategory ///////////////////////// CHECK(xml.FindChildElem(_T("BossCategory")),"BossCategory"); // xml.IntoElem(); // xml.OutOfElem(); ///////////////////////// // TowerDefenseCategory ///////////////////////// CHECK(xml.FindChildElem(_T("TowerDefenseCategory")),"TowerDefenseCategory"); // xml.IntoElem(); // xml.OutOfElem(); ///////////////////////// // QuestCategory ///////////////////////// CHECK(xml.FindChildElem(_T("QuestCategory")),"QuestCategory"); // xml.IntoElem(); // xml.OutOfElem(); ///////////////////////// // BattleCategory ///////////////////////// CHECK(xml.FindChildElem(_T("BattleCategory")),"BattleCategory"); // xml.IntoElem(); // xml.OutOfElem(); ///////////////////////// // MissionCategory ///////////////////////// CHECK(xml.FindChildElem(_T("MissionCategory")),"MissionCategory"); // xml.IntoElem(); xml.OutOfElem(); } return TRUE; } #endif //#ifndef C_NA_0_20100520_ACSYSTEM_CHANGED