#include "SunClientPrecompiledHeader.h" #if !defined (_NA_006802_20130704_REORGANIZATION_RANK_SYSTEM) #include "uiMissionRankMan.h" #include "uiMissionRankTimer/uiMissionRankTimer.h" #include "uiMissionRankEnding/uiMissionRankEnding.h" #include "uiMissionRankList/uiMissionRankList.h" #include "uiMissionRankGamble/uiMissionRankGamble.h" #include "uiRankMenu/uiRankMenu.h" #include "uiPartyMan/uiPartyMan.h" #include "ItemManager.h" #include "Hero.h" #include "GlobalFunc.h" #include "InterfaceManager.h" #include "ObjectManager.h" #include "Map.h" #include "uiPartyMan/uiPartyMan.h" #include "ArchiveOfStream.h" #include "ResultCode.h" #include "GameFunc.h" #include "MissionManager_Concrete.h" #include "QuestManager_Concrete.h" #include "Application.h" #include "uiBattleZoneMan/uiBattleZoneMan_def.h" #ifdef _INTERNATIONAL_DATE_TOOLTIP #include"uiToolTipMan/uiToolTipMan.h" #endif//_INTERNATIONAL_DATE_TOOLTIP const int c_iCheckPoint = 1000; using namespace RC; //================================================================================================== typedef MissionRanking::RANKING_INFO_LIST RANKING_INFO_LIST; typedef MissionRankingRecord::MEMBER_HASH MEMBER_HASH; //================================================================================================== /** */ uiMissionRankMan::uiMissionRankMan(InterfaceManager *pUIMan) : uiBaseMan(pUIMan) { m_pUIRankTimer = NULL; m_pUIRankEnding = NULL; m_pUIRankList = NULL; m_pUIRankGamble = NULL; InitMission(); ClearRankData(); SetRankingSystemType(eRANKING_TYPE_NONE); } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::OnInitialize() { _LoadUI(); } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::OnRelease() { m_mapEventMap.clear(); m_vecEventMapCategory.clear(); m_MapMissionGroup.clear(); } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::InitMission() { m_dwTotalMonsterKillNum = 0; m_dwMaxMonsterKillNum = 0; m_dwResultMissionClear = 0; //ÃÖÁ¾!!¹Ì¼ÇÁ¾·á½Ã°£ m_dwTotalMonsterDecTimeSecond = 0; //ÃÑ ¸ó½ºÅÍ ´ÜÃà ½Ã°£ m_dwGeneralMonsterDecSecond = 0; //ÀÏ¹Ý ¸ó½ºÅÍ ´ÜÃà ½Ã°£ m_dwLeaderMonsterDecSecond = 0; //¸®´õ ´ÜÃà ½Ã°£ m_dwMissionTime = 0; m_dwStartMissionTime = 0; m_dwUpdateMissionTime = 0; m_dwMissionClearTime = 0; m_bMissionCleared = false; m_dwMissionBestTime = 0; m_bEnableMissionRanking = false; m_iMyRank = 0; m_iMyPartyNum = 0; m_strMyPartyMasterName.clear(); m_bWaitRcvPacket = false; m_bRecvStartTimer = FALSE; } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::ClearRankData() { m_dwMyRankForReward = 0; m_RewardRankKey = 0; m_RewardMissionNo = 0; m_CurMissionNo = 0; m_CurRankPage = 0; GET_MISSION_RANK_MANAGER()->Release(); GET_MISSION_RANK_MANAGER()->Initialize(); GET_MISSION_RANK_MANAGER()->SetStatus( eRANKING_STATUS_NORMAL ); ZeroMemory(&m_MissionPartyInfo, sizeof(m_MissionPartyInfo)); ZeroMemory(&m_FameData, sizeof(m_FameData)); ZeroMemory(&m_PreWeekRank, sizeof(m_PreWeekRank)); ZeroMemory(&m_CurWeekRank, sizeof(m_CurWeekRank)); ZeroMemory(&m_MemberData, sizeof(m_MemberData)); m_PendingRankingType = eRANKING_MAX; m_PendingMissionNo = MAX_MISSION_NUM; m_PendingRankingKey = -1; m_PendingPage = 0; // ¸â¹ö ¿äû½Ã »ç¿ë m_RqstRankingType = eRANKING_MAX; m_RqstMissionNo = MAX_MISSION_NUM; vecRqstMission.clear(); m_SettledDate = 0; m_strFinishDay.clear(); } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::_addTestData() { m_FameData.iRank = 1; m_FameData.iPartyNum = 1111; m_FameData.iLevel = 11; m_FameData.dwTime = 0; m_PreWeekRank[0].iRank = 1; m_PreWeekRank[0].iPartyNum = 1212; m_PreWeekRank[0].iLevel = 12; m_PreWeekRank[0].dwTime = 0; m_PreWeekRank[1].iRank = 2; m_PreWeekRank[1].iPartyNum = 12; m_PreWeekRank[1].iLevel = 1; m_PreWeekRank[1].dwTime = 0; m_PreWeekRank[2].iRank = 3; m_PreWeekRank[2].iPartyNum = 121; m_PreWeekRank[2].iLevel = 12; m_PreWeekRank[2].dwTime = 0; m_CurWeekRank[0].iRank = 1; m_CurWeekRank[0].iPartyNum = 133; m_CurWeekRank[0].iLevel = 14; m_CurWeekRank[0].dwTime = 0; m_CurWeekRank[1].iRank = 2; m_CurWeekRank[1].iPartyNum = 13; m_CurWeekRank[1].iLevel = 55; m_CurWeekRank[1].dwTime = 0; m_CurWeekRank[2].iRank = 3; m_CurWeekRank[2].iPartyNum = 1332; m_CurWeekRank[2].iLevel = 5; m_CurWeekRank[2].dwTime = 0; TCHAR szString[256]; for(int i=0; i<6; ++i) { m_MemberData[i].iLevel = i+10; ZeroMemory(szString, sizeof(szString)); Snprintf(szString,255,_T("guildguildguild%d"), i); //m_MemberData[i].strGuild = szString; StrnCopy(m_MemberData[i].strGuild, szString, MAX_GUILDNAME_LENGTH); ZeroMemory(szString, sizeof(szString)); Snprintf(szString,255,_T("namenamename000%d"), i); //m_MemberData[i].strName = szString; StrnCopy(m_MemberData[i].strName, szString, MAX_CHARNAME_LENGTH); } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::SetReceivedStartMissionTime(DWORD dwRecievedTime, DWORD dwMissionTime) { m_dwStartMissionTime = dwRecievedTime; m_dwMissionTime = dwMissionTime; m_bRecvStartTimer = TRUE; } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::SetReceivedUpdateMissionTime(DWORD dwRecievedTime, DWORD dwMissionTime) { m_dwUpdateMissionTime = dwRecievedTime; m_dwMissionTime = dwMissionTime; } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::SetClearTime(DWORD dwClearTime) { m_dwMissionClearTime = dwClearTime; m_bMissionCleared = true; } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::DisplayTime() { if(g_pMap && (IsMissionRanking((RANKINGNO)g_pMap->GetMapID(), eRANKING_TYPE_TIME_ATTACK) == false)) // ¹Ì¼Ç·©Å·(ŸÀÓ¾îÅøðµå)¿¡ ÇØ´çÇÏÁö ¾ÊÀ¸¸é ŸÀ̸Ӹ¦ º¸¿©ÁÖÁö ¾ÊÀ½ return; if(m_pUIRankTimer) { //ŸÀ̸ӽÃÀÛ BRD¸¦ ¹ÞÁö¾Ê¾Ò´Ù¸é âÀ» ¶ç¿ìÁö¾Ê´Â´Ù. if(!m_bRecvStartTimer) { m_pUIRankTimer->ShowInterface(FALSE); return; } if(m_pUIRankTimer->IsVisibleWindow()) { m_pUIRankTimer->UpdateTime(); } #if !defined(_NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES) else { //¹Ì¼Ç ·ÎºñâÀÌ ¶°ÀÖ´Ù¸é ·©Å©Å¸À̸Ó⠴ݴ´Ù. if( GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_READY_MISSION_CFG )->IsVisible() ) { m_pUIRankTimer->ShowInterface(FALSE); } else { m_pUIRankTimer->ShowInterface(TRUE); } } #endif // !defined (_NA_006774_20130617_ARRANGE_UNNECESSARY_RESOURCES) } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::DisplayEnding(int iRank, int iPartyNum, TCHAR* pMasterName) { m_iMyRank = iRank; m_iMyPartyNum = iPartyNum; m_strMyPartyMasterName = pMasterName; // º¸¿©ÁÙ°ÍÀ» ¹Ì¸® °è»êÇÏÀÚ m_dwGeneralMonsterDecSecond = m_dwMonsterKillNum_General * GENERAL_MON; //ÀÏ¹Ý ¸ó½ºÅÍ ´ÜÃà ½Ã°£ m_dwLeaderMonsterDecSecond = m_dwMonsterKillNum_Leader * LEADER_MON; //¸®´õ ´ÜÃà ½Ã°£ m_dwTotalMonsterDecTimeSecond = m_dwGeneralMonsterDecSecond + m_dwLeaderMonsterDecSecond; //ÃÑ ¸ó½ºÅÍ ´ÜÃà ½Ã°£ m_dwResultMissionClear = m_dwMissionClearTime + (m_dwTotalMonsterDecTimeSecond * 1000); //¸ó½ºÅÍ kill ¼ö »©±â Àü ½Ã°£ if(m_pUIRankEnding) { m_pUIRankEnding->ShowInterface(TRUE); } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::CloseEndingDlg() { if(m_pUIRankEnding) { m_pUIRankEnding->ShowInterface(FALSE); } } //------------------------------------------------------------------------------ /** */ TCHAR* uiMissionRankMan::GetMemberName(RANKINGNO no, RANKINGKEY key, eRANKING_TYPE type) { if (MissionRanking* const mission_ranking = GET_MISSION_RANK_MANAGER()->FindMissionRanking(type, no)) { if (MissionRankingRecord* record = mission_ranking->FindRanking(key)) { const MEMBER_HASH& members = record->GetMemberHash(); MEMBER_HASH::const_iterator it = members.begin(), end = members.end(); for (; it != end; ++it) { if (RankingMember* member = it->second) { return const_cast(member->GetCharName()); } } } } return NULL; } //------------------------------------------------------------------------------ /** */ int uiMissionRankMan::GetMemberLV(RANKINGNO no, RANKINGKEY key, eRANKING_TYPE type) { if (MissionRanking* const mission_ranking = GET_MISSION_RANK_MANAGER()->FindMissionRanking(type, no)) { if (MissionRankingRecord* record = mission_ranking->FindRanking(key)) { const MEMBER_HASH& members = record->GetMemberHash(); MEMBER_HASH::const_iterator it = members.begin(), end = members.end(); for (; it != end; ++it) { if (RankingMember* member = it->second) { return member->GetLV(); } } } } return 0; } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::ShowRankMenu( BOOL bShow ) { if( m_pUIRankMenu == NULL ) return; m_pUIRankMenu->ShowInterface( bShow ); } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::ShowRankList(int iType) { SetRankingSystemType(iType); if( iType == eRANKING_TYPE_TIME_ATTACK ) { m_pUIRankList->ShowInterface( TRUE ); } else { m_pUIPointList->ShowInterface( TRUE ); } if(m_pUIRankGamble) { m_pUIRankGamble->ShowInterface(FALSE); } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::ShowRankGamble() { if(m_pUIRankGamble) { m_pUIRankGamble->ShowInterface(TRUE); } m_pUIRankList->ShowInterface( FALSE ); m_pUIPointList->ShowInterface( FALSE ); } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::CloseMissionRunningDlg() { if(m_pUIRankTimer) { m_pUIRankTimer->ShowInterface(FALSE); } if(m_pUIRankEnding) { m_pUIRankEnding->ShowInterface(FALSE); } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::CloseMissionRankingDlg() { m_pUIRankList->ShowInterface( FALSE ); m_pUIPointList->ShowInterface( FALSE ); if(m_pUIRankGamble) { m_pUIRankGamble->ShowInterface(FALSE); } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::GetTimeString(DWORD dwTime, util::_tstring &strTime) { TCHAR szTime[INTERFACE_STRING_LENGTH] = {0,}; DWORD minTick = 0; DWORD secTick = 0; DWORD msecTick = 0; if(dwTime) { DWORD dwTimeTemp1 = dwTime / SEC_PER_TICK; DWORD dwTimeTemp2 = dwTime % SEC_PER_TICK; if(dwTimeTemp1) { minTick = dwTimeTemp1 / 60; secTick = dwTimeTemp1 % 60; } if(dwTimeTemp2) msecTick = dwTimeTemp2 / 10; } strTime.clear(); Snprintf (szTime, INTERFACE_STRING_LENGTH-1, _T("%03d'%02d''%02d"), minTick, secTick, msecTick); strTime = szTime; } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::InitMissionGroup() { m_mapEventMap.clear(); m_vecEventMapCategory.clear(); m_vecEventMapCode.clear(); m_vecMissionCode.clear(); m_MapMissionGroup.clear(); const RankingManager::MISSION_LEVEL_AREA_HASH& MissionLVAreaHash = GET_MISSION_RANK_MANAGER()->GetMissionLevelAreaTable(); RankingManager::MISSION_LEVEL_AREA_HASH::const_iterator it; RankingManager::LEVEL_AREA* pArea = NULL; MapGroup * pGroup = NULL; MISSION_GROUP_ITR itr; int iEventMapGroup = 0; std::vector vecEventMapCategory; //GS_BUG_FIX:¹Ì¼Ç¼ø¼­Á¤·Ä(¿©±âµµ ÇØ½¬¼ø¼­¾È¸ÂÀ¸¸é ¼ø¼­²¿ÀϼöÀÖÀ½±×·¡¼­ ¹Ì¸®Á¤·Ä) std::vector vecMissionMapCategory; for(it = MissionLVAreaHash.begin(); it != MissionLVAreaHash.end(); ++it) { pArea = (it->second); if(!pArea) continue; if(pArea->m_RankingType == eRANKING_TYPE_TIME_ATTACK) //¹Ì¼Ç·©Å· { //GS_BUG_FIX: first ¹Ì¼Ç ³Ñ¹ö¿¡ µû¶ó¼­ »ðÀÔÇϰí vecMissionMapCategory.push_back(pArea->m_MissionNo); } else if(pArea->m_RankingType == eRANKING_TYPE_POINT) //Æ÷ÀÎÆ®·©Å· { vecEventMapCategory.push_back(pArea->m_MissionNo); } } //GS_BUG_FIX: second Á¤·ÄÇÑ´Ù ±âº»Àº ³»¸²Â÷¼ø if(!vecMissionMapCategory.empty()) sort(vecMissionMapCategory.begin(),vecMissionMapCategory.end()); for(unsigned int i=0;iFindMapInfo(vecMissionMapCategory[i]); if(pMapInfo) { itr = m_MapMissionGroup.find(pMapInfo->MapKind); if ( itr == m_MapMissionGroup.end() ) { pGroup = MapInfoParser::Instance()->GetMapGroup( pMapInfo->MapKind ); if(pGroup) { m_MapMissionGroup.insert( MISSION_GROUP_PAIR(pMapInfo->MapKind, pGroup) ); } } } } //GS_BUG_FIX:ÇØ½¬¸ÊÀº ¼ø¼­º¸ÀåÀ» ÇÏÁö¾Ê´Âµ¥ push_back¸¦ Çß´Ù À̰÷¿¡¼­ Á¤·ÄÇØÁØ´Ù. if(!vecEventMapCategory.empty()) sort(vecEventMapCategory.begin(),vecEventMapCategory.end()); for(unsigned int i=0;iFindMapInfo(vecEventMapCategory[i]); stEventMapInfo stEventMap; if(pMapInfo && (pMapInfo->dwANCode)) { if(m_vecEventMapCategory.size() == 0) { stEventMap.iGroup = iEventMapGroup; stEventMap.dwCategory = pMapInfo->dwANCode; m_vecEventMapCategory.push_back(stEventMap); } else { int iInsertIndex = -1; for(unsigned int k=0; k < m_vecEventMapCategory.size(); ++k) { if(m_vecEventMapCategory[k].dwCategory == pMapInfo->dwANCode) { iInsertIndex = m_vecEventMapCategory[k].iGroup; break; } } if(iInsertIndex < 0) // »õ ±×·ì »ý¼º { ++iEventMapGroup; stEventMap.iGroup = iEventMapGroup; stEventMap.dwCategory = pMapInfo->dwANCode; m_vecEventMapCategory.push_back(stEventMap); } } m_mapEventMap.insert( EVENTMAP_PAIR(pMapInfo->dwANCode, const_cast< sMAPINFO * >(pMapInfo) )); m_vecEventMapCode.push_back(pMapInfo->MapCode); } } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::SetFinishDay(DWORD dwSettledDate) { m_strFinishDay.clear(); m_SettledDate = dwSettledDate; if(m_SettledDate > 0) { int iMonth = m_SettledDate % 10000; int iYear = m_SettledDate / 10000; if(iMonth) { int iDay = iMonth % 100; iMonth = iMonth / 100; TCHAR szResult[INTERFACE_STRING_LENGTH] = {0,}; #ifdef _INTERNATIONAL_DATE_TOOLTIP uiToolTipMan* pUIMan = (uiToolTipMan*)g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP); if(pUIMan) { int nIndex = pUIMan->GetStringMonth(iMonth); TCHAR szMonth[INTERFACE_STRING_LENGTH] = {0,}; g_InterfaceManager.GetInterfaceString(nIndex, szMonth);//¿µ¹®´Þ Snprintf(szResult, INTERFACE_STRING_LENGTH-1, _T(" %s %02d, %02d"), szMonth, iDay, iYear); } #else Snprintf(szResult, INTERFACE_STRING_LENGTH-1, _T("%02d-%02d-%02d"), iYear, iMonth, iDay); #endif//_INTERNATIONAL_UI m_strFinishDay = szResult; } } if( m_iRankingSystemType == 1 ) { m_pUIRankList->UpdateFinishDay(); } else { m_pUIPointList->UpdateFinishDay(); } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::SetReceiveData(BYTE type, RANKINGNO no, BYTE page) // ¼­¹ö·ÎºÎÅÍ ¹Þ¾Æ¿Â µ¥ÀÌÅ͸¦ ¼ÂÆÃÇÑ´Ù { bool bPointRanking = false; if(GET_MISSION_RANK_MANAGER()->GetRankingType(no) == eRANKING_TYPE_POINT) //Æ÷ÀÎÆ®·©Å· { bPointRanking = true; } else if(GET_MISSION_RANK_MANAGER()->GetRankingType(no) == eRANKING_TYPE_TIME_ATTACK) //¹Ì¼Ç·©Å· { } else { return; } m_CurMissionNo = no; m_CurRankPage = page; ZeroMemory(&m_MemberData, sizeof(m_MemberData)); MissionRanking *pMR = NULL; int iRank=1; int iIndex = 0; if((type == eRANKING_FAME) && (page == 0)) // ¸í¿¹ÀÇ Àü´çÀº ÆäÀÌÁö°¡ 0À϶§¸¸ »õ·Î ¼¼ÆÃ { ZeroMemory(&m_FameData, sizeof(m_FameData)); // ¸í¿¹ÀÇ Àü´ç pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(eRANKING_FAME, m_CurMissionNo); if(pMR) { const RANKING_INFO_LIST& mission_list = pMR->GetMemberHash(); iRank=1; RANKING_INFO_LIST::const_iterator it = mission_list.begin(), end = mission_list.end(); for (; it != end; ++it) { if(iRank > 1) // ¸í¿¹ÀÇ Àü´çÀº 1¸í¸¸ ÀÖ´Ù break; MissionRankingRecord* const record = (*it); m_FameData.iPartyNum = record->GetKey(); // ÆÄƼ¹øÈ£ m_FameData.dwTime = (DWORD)(record->GetClearTime()); // ÁøÇà½Ã°£ m_FameData.iRank = pMR->GetRanking(m_FameData.iPartyNum); // ¼øÀ§ if(bPointRanking) { m_FameData.iLevel = GetMemberLV(no, m_FameData.iPartyNum, (eRANKING_TYPE)type); // ·¹º§ //m_FameData.strName = GetMemberName(no, m_FameData.iPartyNum, (eRANKING_TYPE)type); //À̸§ StrnCopy(m_FameData.strName, GetMemberName(no, m_FameData.iPartyNum, (eRANKING_TYPE)type), MAX_CHARNAME_LENGTH); } else { m_FameData.iLevel = record->GetAvrgLVClient(); // Æò±Õ·¹º§ } ++iRank; } } } else if((type == eRANKING_LASTWEEK) && (page == 0)) // Áö³­ÁÖ ¼øÀ§´Â ÆäÀÌÁö°¡ 0À϶§¸¸ »õ·Î ¼¼ÆÃ { ZeroMemory(&m_PreWeekRank, sizeof(m_PreWeekRank)); // Áö³­ÁÖ ·©Å· pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(eRANKING_LASTWEEK, m_CurMissionNo); if(pMR) { const RANKING_INFO_LIST& mission_list = pMR->GetMemberHash(); iIndex = 0; RANKING_INFO_LIST::const_iterator it = mission_list.begin(), end = mission_list.end(); for (; it != end; ++it) { if(iIndex >= MAX_PREWEEK_RANK) // Áö³­ÁÖ´Â 3À§±îÁö¸¸ break; MissionRankingRecord* const record = (*it); m_PreWeekRank[iIndex].iPartyNum = record->GetKey(); // ÆÄƼ¹øÈ£ m_PreWeekRank[iIndex].dwTime = (DWORD)(record->GetClearTime()); // ÁøÇà½Ã°£ m_PreWeekRank[iIndex].iRank = pMR->GetRanking(m_PreWeekRank[iIndex].iPartyNum); // ¼øÀ§ if(bPointRanking) { m_PreWeekRank[iIndex].iLevel = GetMemberLV(no, m_PreWeekRank[iIndex].iPartyNum, (eRANKING_TYPE)type); // ·¹º§ //m_PreWeekRank[iIndex].strName = GetMemberName(no, m_PreWeekRank[iIndex].iPartyNum, (eRANKING_TYPE)type); // À̸§ StrnCopy(m_PreWeekRank[iIndex].strName, GetMemberName(no, m_PreWeekRank[iIndex].iPartyNum, (eRANKING_TYPE)type), MAX_CHARNAME_LENGTH); } else { m_PreWeekRank[iIndex].iLevel = record->GetAvrgLVClient(); // Æò±Õ·¹º§ } ++iIndex; } } } else if(type == eRANKING_TODAYWEEK) { ZeroMemory(&m_CurWeekRank, sizeof(m_CurWeekRank)); int iStartWeekRank = (page*MAX_WEEK_RANK) + 1; // À̹øÁÖ ·©Å· pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(eRANKING_TODAYWEEK, m_CurMissionNo); if(pMR) { const RANKING_INFO_LIST& mission_list = pMR->GetMemberHash(); iIndex = 0; RANKING_INFO_LIST::const_iterator it = mission_list.begin(), end = mission_list.end(); for (; it != end; ++it) { MissionRankingRecord* const record = (*it); int iKey = record->GetKey(); // ÆÄƼ¹øÈ£ int iWeekRank = pMR->GetRanking(iKey); // ¼øÀ§ if(iWeekRank < iStartWeekRank) continue; if(iIndex >= MAX_WEEK_RANK) // ÇÑÆäÀÌÁö¿¡ 10°³¾¿ ÃÑ 50°³ break; m_CurWeekRank[iIndex].iPartyNum = iKey; // ÆÄƼ¹øÈ£ m_CurWeekRank[iIndex].dwTime = (DWORD)(record->GetClearTime()); // ÁøÇà½Ã°£ m_CurWeekRank[iIndex].iRank = iWeekRank; // ¼øÀ§ if(bPointRanking) { m_CurWeekRank[iIndex].iLevel = GetMemberLV(no, m_CurWeekRank[iIndex].iPartyNum, (eRANKING_TYPE)type); //·¹º§ //m_CurWeekRank[iIndex].strName = GetMemberName(no, m_CurWeekRank[iIndex].iPartyNum, (eRANKING_TYPE)type); //À̸§ StrnCopy(m_CurWeekRank[iIndex].strName, GetMemberName(no, m_CurWeekRank[iIndex].iPartyNum, (eRANKING_TYPE)type), MAX_CHARNAME_LENGTH); } else { m_CurWeekRank[iIndex].iLevel = record->GetAvrgLVClient(); // Æò±Õ·¹º§ } ++iIndex; } } } if( m_iRankingSystemType == 1 ) { m_pUIRankList->UpdateRankList(); } else { m_pUIPointList->UpdateRankList(); } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::UpdateReceiveData(RANKINGNO no, BYTE page) { bool bPointRanking = false; if(GET_MISSION_RANK_MANAGER()->GetRankingType(no) == eRANKING_TYPE_POINT) //Æ÷ÀÎÆ®·©Å· { bPointRanking = true; } else if(GET_MISSION_RANK_MANAGER()->GetRankingType(no) == eRANKING_TYPE_TIME_ATTACK) //¹Ì¼Ç·©Å· { } else { return; } m_CurMissionNo = no; m_CurRankPage = page; // ¸¸¾à ³»°¡ ÇØ´ç µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Ù¸é ¸®½ºÆ®¸¸ °»½Å if(IsRankData(no, page)) { ZeroMemory(&m_FameData, sizeof(m_FameData)); ZeroMemory(&m_PreWeekRank, sizeof(m_PreWeekRank)); ZeroMemory(&m_CurWeekRank, sizeof(m_CurWeekRank)); ZeroMemory(&m_MemberData, sizeof(m_MemberData)); MissionRanking *pMR = NULL; int iRank=1; int iIndex = 0; // ¸í¿¹ÀÇ Àü´ç pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(eRANKING_FAME, m_CurMissionNo); if(pMR) { const RANKING_INFO_LIST& mission_list = pMR->GetMemberHash(); iRank=1; RANKING_INFO_LIST::const_iterator it = mission_list.begin(), end = mission_list.end(); for (; it != end; ++it) { if(iRank > MAX_FAME_RANK) // ¸í¿¹ÀÇ Àü´çÀº 1¸í¸¸ ÀÖ´Ù break; MissionRankingRecord* const record = (*it); m_FameData.iPartyNum = record->GetKey(); // ÆÄƼ¹øÈ£ m_FameData.dwTime = (DWORD)(record->GetClearTime()); // ÁøÇà½Ã°£ m_FameData.iRank = pMR->GetRanking(m_FameData.iPartyNum); // ¼øÀ§ if(bPointRanking) { m_FameData.iLevel = GetMemberLV(no, m_FameData.iPartyNum, eRANKING_FAME); //·¹º§ //m_FameData.strName = GetMemberName(no, m_FameData.iPartyNum, eRANKING_FAME);//À̸§ StrnCopy(m_FameData.strName, GetMemberName(no, m_FameData.iPartyNum, eRANKING_FAME), MAX_CHARNAME_LENGTH); } else { m_FameData.iLevel = record->GetAvrgLVClient(); // Æò±Õ·¹º§ } ++iRank; } } // Áö³­ÁÖ ·©Å· pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(eRANKING_LASTWEEK, m_CurMissionNo); if(pMR) { const RANKING_INFO_LIST& mission_list = pMR->GetMemberHash(); iIndex = 0; RANKING_INFO_LIST::const_iterator it = mission_list.begin(), end = mission_list.end(); for (; it != end; ++it) { if(iIndex >= MAX_PREWEEK_RANK) // Áö³­ÁÖ´Â 3À§±îÁö¸¸ break; MissionRankingRecord* const record = (*it); m_PreWeekRank[iIndex].iPartyNum = record->GetKey(); // ÆÄƼ¹øÈ£ m_PreWeekRank[iIndex].dwTime = (DWORD)(record->GetClearTime()); // ÁøÇà½Ã°£ m_PreWeekRank[iIndex].iRank = pMR->GetRanking(m_PreWeekRank[iIndex].iPartyNum); // ¼øÀ§ if(bPointRanking) { m_PreWeekRank[iIndex].iLevel = GetMemberLV(no, m_PreWeekRank[iIndex].iPartyNum, eRANKING_LASTWEEK); //·¹º§ //m_PreWeekRank[iIndex].strName = GetMemberName(no, m_PreWeekRank[iIndex].iPartyNum, eRANKING_LASTWEEK); //À̸§ StrnCopy(m_PreWeekRank[iIndex].strName, GetMemberName(no, m_PreWeekRank[iIndex].iPartyNum, eRANKING_LASTWEEK), MAX_CHARNAME_LENGTH); } else { m_PreWeekRank[iIndex].iLevel = record->GetAvrgLVClient(); // Æò±Õ·¹º§ } ++iIndex; } } int iStartWeekRank = (page*MAX_WEEK_RANK) + 1; // À̹øÁÖ ·©Å· pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(eRANKING_TODAYWEEK, m_CurMissionNo); if(pMR) { const RANKING_INFO_LIST& mission_list = pMR->GetMemberHash(); iIndex = 0; RANKING_INFO_LIST::const_iterator it = mission_list.begin(), end = mission_list.end(); for (; it != end; ++it) { MissionRankingRecord* const record = (*it); int iKey = record->GetKey(); // ÆÄƼ¹øÈ£ int iWeekRank = pMR->GetRanking(iKey); // ¼øÀ§ if(iWeekRank < iStartWeekRank) continue; if(iIndex >= MAX_WEEK_RANK) // ÇÑÆäÀÌÁö¿¡ 10°³¾¿ ÃÑ 50°³ break; m_CurWeekRank[iIndex].iPartyNum = iKey; // ÆÄƼ¹øÈ£ m_CurWeekRank[iIndex].dwTime = (DWORD)(record->GetClearTime()); // ÁøÇà½Ã°£ m_CurWeekRank[iIndex].iRank = iWeekRank; // ¼øÀ§ if(bPointRanking) { m_CurWeekRank[iIndex].iLevel = GetMemberLV(no, m_CurWeekRank[iIndex].iPartyNum, eRANKING_TODAYWEEK); //·¹º§ //m_CurWeekRank[iIndex].strName = GetMemberName(no, m_CurWeekRank[iIndex].iPartyNum, eRANKING_TODAYWEEK); //À̸§ StrnCopy(m_CurWeekRank[iIndex].strName, GetMemberName(no, m_CurWeekRank[iIndex].iPartyNum, eRANKING_TODAYWEEK), MAX_CHARNAME_LENGTH); } else { m_CurWeekRank[iIndex].iLevel = record->GetAvrgLVClient(); // Æò±Õ·¹º§ } ++iIndex; } } if( m_iRankingSystemType == 1 ) { m_pUIRankList->UpdateRankList(); } else { m_pUIPointList->UpdateRankList(); } } else { // µ¥ÀÌÅͰ¡ ¾øÀ¸¸é ¼­¹ö·Î sync º¸³¿ m_PendingRankingType = eRANKING_FAME; m_PendingMissionNo = m_CurMissionNo; m_PendingPage = m_CurRankPage; this->Send_CG_MISSION_RANKING_INFO_SYN(m_PendingRankingType, m_PendingMissionNo, m_PendingPage); } } //------------------------------------------------------------------------------ /** */ bool uiMissionRankMan::IsRankData(RANKINGNO no, BYTE page) { for(unsigned int i=0; iFindMissionRanking(type, no); if(pMR) { MissionRankingRecord * pRecord = pMR->FindRanking(key); if(pRecord) { const MEMBER_HASH& members = pRecord->GetMemberHash(); if(members.empty()) // µ¥ÀÌÅ͸¦ °®°í ÀÖÁö ¾ÊÀ¸¸é ¼­¹ö¿¡°Ô ¿äû { m_RqstRankingType = type; m_RqstMissionNo = no; m_PendingRankingKey = key; MSG_CG_MISSION_RANKING_MEMBER_INFO_SYN sync; sync.m_Type = m_RqstRankingType; sync.m_MissionNo = m_RqstMissionNo; sync.m_Key = m_PendingRankingKey; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &sync, sizeof (sync)); m_bWaitRcvPacket = true; } else // ÀÖÀ¸¸é °®°í ÀÖ´Â°É·Î ÇØ°á { SetMemberData(no, key, type); if( m_iRankingSystemType == 1 ) { m_pUIRankList->UpdateMemberList(); } else { m_pUIPointList->UpdateMemberList(); } } } } } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::SetMemberData(RANKINGNO no, RANKINGKEY key, eRANKING_TYPE type) { ZeroMemory(&m_MemberData, sizeof(m_MemberData)); if (MissionRanking* const mission_ranking = GET_MISSION_RANK_MANAGER()->FindMissionRanking(type, no)) { if (MissionRankingRecord* record = mission_ranking->FindRanking(key)) { const MEMBER_HASH& members = record->GetMemberHash(); MEMBER_HASH::const_iterator it = members.begin(), end = members.end(); for (int i = 0; i < _countof(m_MemberData) && it != end; ++i, ++it) { RankingMember* member = it->second; if (member == NULL) { assert(!"unexpected status"); continue; }; if (stMissionRankMemberData* dest = &m_MemberData[i]) { dest->iLevel = member->GetLV(); //dest->strGuild = member->GetGuildName(); //dest->strName = member->GetCharName(); StrnCopy(dest->strGuild, member->GetGuildName(), MAX_GUILDNAME_LENGTH); StrnCopy(dest->strName, member->GetCharName(), MAX_CHARNAME_LENGTH); } } } } } //------------------------------------------------------------------------------ /** */ bool uiMissionRankMan::IsEnableReward() { m_RewardRankKey = 0; m_RewardMissionNo = 0; m_dwMyRankForReward = 0; // ³»°¡ º¸»ó¹ÞÀ» ¼ö ÀÖ´ÂÁö È®ÀÎ if(!g_pHero) return false; MissionRanking *pMR = NULL; RANKINGNO no = 0; RANKINGKEY key = 0; eRANKING_RESULT result = RC_RANKING_INVALID_STATE; if(this->GetRankingSystemType() == eRANKING_TYPE_TIME_ATTACK) // ¹Ì¼Ç·©Å· { for(unsigned int i=0; i < m_vecMissionCode.size(); ++i) { no = m_vecMissionCode[i]; // Áö³­ÁÖ ¼øÀ§·Î º¸»óÀ» ¹Þ´Â´Ù pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(eRANKING_LASTWEEK, no); if(pMR) { const RANKING_INFO_LIST& mission_list = pMR->GetMemberHash(); RANKING_INFO_LIST::const_iterator it = mission_list.begin(), end = mission_list.end(); for (; it != end; ++it) { MissionRankingRecord* const record = (*it); key = record->GetKey(); RankingMember* pRankingMember = NULL; result = GET_MISSION_RANK_MANAGER()->CanReward( no, key, g_pHero->GetName(), &pRankingMember); if(RC_RANKING_SUCCESS == result) { m_RewardRankKey = key; m_RewardMissionNo = no; m_dwMyRankForReward = pMR->GetRanking(key); return true; } } } } } else if(this->GetRankingSystemType() == eRANKING_TYPE_POINT) //Æ÷ÀÎÆ®·©Å· { for(unsigned int i=0; i < m_vecEventMapCode.size(); ++i) { no = m_vecEventMapCode[i]; // Áö³­ÁÖ ¼øÀ§·Î º¸»óÀ» ¹Þ´Â´Ù pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(eRANKING_LASTWEEK, no); if(pMR) { const RANKING_INFO_LIST& mission_list = pMR->GetMemberHash(); RANKING_INFO_LIST::const_iterator it = mission_list.begin(), end = mission_list.end(); for (; it != end; ++it) { MissionRankingRecord* const record = (*it); key = record->GetKey(); RankingMember* pRankingMember = NULL; result = GET_MISSION_RANK_MANAGER()->CanReward( no, key, g_pHero->GetName(), &pRankingMember); if(RC_RANKING_SUCCESS == result) { m_RewardRankKey = key; m_RewardMissionNo = no; m_dwMyRankForReward = pMR->GetRanking(key); return true; } } } } } else { return false; } // º¸»ó¹ÞÀ» ¼ö ¾ø´Â °æ¿ìÀÇ ¸Þ½ÃÁö ó¸® if(RC_RANKING_INVALID_STATE == result) { // 5906 º¸»ó ´ë»óÀÌ ¾Æ´Õ´Ï´Ù. TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; g_InterfaceManager.GetInterfaceString(5906, szMessage, INTERFACE_STRING_LENGTH); GlobalFunc::OutputMsg_SysMsg(szMessage); } else { _processErrorCode((DWORD)result); } return false; } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::CheckEnableMissionRankingRecord() // ¹Ì¼Ç ½ÃÀ۽à óÀ½¿¡¸¸ üũ { if(!g_pMap) { return; } RANKINGNO no = (RANKINGNO)g_pMap->GetMapID(); if(IsMissionRanking(no, eRANKING_TYPE_TIME_ATTACK) == false) { m_bEnableMissionRanking = false; return; } ZeroMemory(&m_MissionPartyInfo, sizeof(m_MissionPartyInfo)); uiPartyMan* partyMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_PARTY)); int iMemberCount = 0; if(partyMan) { STLX_VECTOR& vPartyMem = partyMan->GetPartyListRef(); for (int i=0; iGetPartyNum(); ++i) { if(!vPartyMem[i].IsDead()) { ++iMemberCount; m_MissionPartyInfo[i].m_Class = vPartyMem[i].Get().m_byClassType; m_MissionPartyInfo[i].m_LV = vPartyMem[i].Get().m_wLevel; } } } RC::eRANKING_RESULT result = GET_MISSION_RANK_MANAGER()->CanRegisterMissionRecord(no, iMemberCount, m_MissionPartyInfo); if(result == RC_RANKING_SUCCESS) m_bEnableMissionRanking = true; else { m_bEnableMissionRanking = false; _processErrorCode(result, eOUTPUT_MSG_TOP_SHOW); _processErrorCode(result); } } //------------------------------------------------------------------------------ /** */ bool uiMissionRankMan::IsEnableMissionRanking() { return m_bEnableMissionRanking; } //------------------------------------------------------------------------------ /** */ bool uiMissionRankMan::DecPage() { if(m_CurRankPage <= 0) return false; --m_CurRankPage; UpdateReceiveData(m_CurMissionNo, m_CurRankPage); return true; } //------------------------------------------------------------------------------ /** */ bool uiMissionRankMan::IncPage() { if(m_CurRankPage >= MAX_PAGE) return false; ++m_CurRankPage; UpdateReceiveData(m_CurMissionNo, m_CurRankPage); return true; } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::Send_CG_MISSION_RANKING_INFO_SYN(BYTE byPendingRankingType, RANKINGNO PendingMissionNo, BYTE byPendingPage) { if(!m_bWaitRcvPacket) { MSG_CG_MISSION_RANKING_INFO_SYN sync; sync.m_Type = byPendingRankingType; sync.m_MissionNo = PendingMissionNo; sync.m_Page = byPendingPage; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &sync, sizeof (sync)); m_bWaitRcvPacket = true; } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::Send_CG_MISSION_RANKING_REWARD_SYN() { if(!m_bWaitRcvPacket) { MSG_CG_MISSION_RANKING_REWARD_SYN sync; sync.m_Key = m_RewardRankKey; sync.m_MissionNo = m_RewardMissionNo; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &sync, sizeof (sync)); m_bWaitRcvPacket = true; } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::NetworkProc( MSG_BASE * pMsg ) { TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; TCHAR szTemp[INTERFACE_STRING_LENGTH] = {0,}; switch (pMsg->m_byCategory) { case CG_MISSION: { switch (pMsg->m_byProtocol) { case CG_MISSION_RECORD_ELAPSEDTIME_CMD: { MSG_CG_MISSION_RECORD_ELAPSEDTIME_CMD *pPacket = (MSG_CG_MISSION_RECORD_ELAPSEDTIME_CMD *)pMsg; SetReceivedStartMissionTime(clock_function::GetTickCount(), pPacket->m_MissionElapsedTimePerSecond * 1000); this->m_dwMissionBestTime = pPacket->m_MissionBestClearTimePerSecond * 1000; if(g_pMap) { //½ºÅ©¸³Æ®¿¡¼­ Àоî¿Í¾ßÇÔ RANKINGNO no = (RANKINGNO)g_pMap->GetMapID(); RankingManager::LEVEL_AREA* pArea = GET_MISSION_RANK_MANAGER()->FindLVArea(no); if(pArea) m_dwMaxMonsterKillNum = pArea->m_MaxMonsterKill; } CheckEnableMissionRankingRecord(); } break; case CG_MISSION_TIMER_CHANGED_BRD: { MSG_CG_MISSION_TIMER_CHANGED_BRD *pPacket = (MSG_CG_MISSION_TIMER_CHANGED_BRD *)pMsg; m_dwTotalMonsterKillNum = pPacket->m_TotalMonsterKillNum; #ifdef _DEBUG TCHAR szDebug[INTERFACE_STRING_LENGTH] = {0,}; Snprintf(szDebug, INTERFACE_STRING_LENGTH-1, _T("\nCG_MISSION_TIMER_CHANGED_BRD: %ld\n"),pPacket->m_TotalMonsterKillNum); OutputDebugString(szDebug); #endif } break; case CG_MISSION_CLEAR_RECORD_CMD: { MSG_CG_MISSION_CLEAR_RECORD_CMD *pPacket = (MSG_CG_MISSION_CLEAR_RECORD_CMD *)pMsg; m_dwMonsterKillNum_General = pPacket->m_MonsterKillNum_General; m_dwMonsterKillNum_Leader = pPacket->m_MonsterKillNum_Leader; ////////////////////////////////////////////////////////////////////////// // ÇØ´ç³»¿ëÀº ±âÁ¸¿¡ À߸øµÈ ºÎºÐ¶§¹®¿¡ À̺κп¡¼­ ¹Ì¼Ç Ä«¿îÆ®¸¦ Áõ°¡ ½Ã۱â·Î ¼­¹ö¿Í ÇÕÀÇ Çß½À´Ï´Ù. if (g_pMission_Concrete && g_pMap) { // Æ®¸®°Å ÂÊ¿¡¼­ SetMissionPoint¸¦ ¿Ã·Á Áֱ⠶§¹®¿¡ ¿©±â¿¡¼­ ¶Ç´Ù½Ã ¿Ã·ÁÁÙ Çʿ䰡 ¾ø´Ù. if ( g_pQMGR_Real ) { g_pQMGR_Real->Event( QUEST_EVENT_MISSION, NULL); g_InterfaceManager.UpdateQuestInfo(); } } ////////////////////////////////////////////////////////////////////////// } break; case CG_MISSION_RANKING_SUCCESS_BRD: { MSG_CG_MISSION_RANKING_SUCCESS_BRD *pPacket = (MSG_CG_MISSION_RANKING_SUCCESS_BRD *)pMsg; SetClearTime(pPacket->m_ClearTime); if(g_pHero) { uiPartyMan* partyMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_PARTY)); if(partyMan) { uicPartyMemberInfoPlus *pInfo = const_cast(partyMan->GetPartyLeader()); if(pInfo) { TCHAR szMaster[MAX_CHARNAME_LENGTH+1] ={0,}; StrnCopy(szMaster, pInfo->Get().m_szCharName, MAX_CHARNAME_LENGTH); DisplayEnding(pPacket->m_Ranking, pPacket->m_Key, szMaster); } } // 1~50À§ ±îÁö´Â ½Ã½ºÅÛâ¿¡µµ Ãâ·Â~ g_InterfaceManager.GetInterfaceString( 9908, szTemp, INTERFACE_STRING_LENGTH ); // ¹Ì¼Ç·©Å· %dÀ§ Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, pPacket->m_Ranking); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage); } } break; case CG_MISSION_RANKING_FAILED_BRD: { MSG_CG_MISSION_RANKING_FAILED_BRD *pPacket = (MSG_CG_MISSION_RANKING_FAILED_BRD *)pMsg; SetClearTime(pPacket->m_ClearTime); _processErrorCode(pPacket->m_dwErrorCode, eOUTPUT_MSG_CENTER_SHOW); _processErrorCode(pPacket->m_dwErrorCode, eOUTPUT_MSG_CHAT); } break; case CG_MISSION_RANKING_INFO_ACK: { m_bWaitRcvPacket = false; // °¡º¯ ÆÐŶ MSG_CG_MISSION_RANKING_INFO_ACK *pPacket = (MSG_CG_MISSION_RANKING_INFO_ACK *)pMsg; if(m_PendingRankingType == eRANKING_FAME) { SetFinishDay(pPacket->m_SettledDate); stRqstMissionRankInfo missionInfo; missionInfo.no = m_PendingMissionNo; missionInfo.page = m_PendingPage; vecRqstMission.push_back(missionInfo); } if((m_PendingRankingType != eRANKING_MAX) && (m_PendingMissionNo != MAX_MISSION_NUM)) { if(GET_MISSION_RANK_MANAGER()->GetRankingType(m_PendingMissionNo) == eRANKING_TYPE_TIME_ATTACK) //¹Ì¼Ç·©Å· { GET_MISSION_RANK_MANAGER()->SerializeForClient((eRANKING_TYPE)m_PendingRankingType, m_PendingMissionNo, m_PendingPage, pPacket->m_pBUFFER, pPacket->m_Size, RANKING_SERIALIZE_CLIENT_SAVE); } else if(GET_MISSION_RANK_MANAGER()->GetRankingType(m_PendingMissionNo) == eRANKING_TYPE_POINT) //Æ÷ÀÎÆ®·©Å· { GET_MISSION_RANK_MANAGER()->Serialize((eRANKING_TYPE)m_PendingRankingType, m_PendingMissionNo, m_PendingPage, pPacket->m_pBUFFER, pPacket->m_Size, RANKING_SERIALIZE_SAVE); } else { break; } SetReceiveData(m_PendingRankingType, m_PendingMissionNo, m_PendingPage); } ++m_PendingRankingType; if(m_PendingRankingType < eRANKING_MAX) { m_PendingMissionNo = m_CurMissionNo; Send_CG_MISSION_RANKING_INFO_SYN(m_PendingRankingType, m_PendingMissionNo, m_PendingPage); // ´ÙÀ½ ŸÀÔ ¿äû } } break; case CG_MISSION_RANKING_INFO_NAK: { m_bWaitRcvPacket = false; MSG_CG_MISSION_RANKING_INFO_NAK *pPacket = (MSG_CG_MISSION_RANKING_INFO_NAK *)pMsg; _processErrorCode(pPacket->m_dwErrorCode); if(m_PendingRankingType < eRANKING_TODAYWEEK) { ++m_PendingRankingType; m_PendingMissionNo = m_CurMissionNo; Send_CG_MISSION_RANKING_INFO_SYN(m_PendingRankingType, m_PendingMissionNo, m_PendingPage); // ´ÙÀ½ ŸÀÔ ¿äû } } break; // ·©Å· ¸â¹ö Á¤º¸ case CG_MISSION_RANKING_MEMBER_INFO_ACK: { m_bWaitRcvPacket = false; MSG_CG_MISSION_RANKING_MEMBER_INFO_ACK *pPacket = (MSG_CG_MISSION_RANKING_MEMBER_INFO_ACK *)pMsg; MissionRanking *pMR = GET_MISSION_RANK_MANAGER()->FindMissionRanking(m_RqstRankingType, m_RqstMissionNo); if(pMR) { MissionRankingRecord * pRecord = pMR->FindRanking(m_PendingRankingKey); if(pRecord) { ArchiveOfStream lArchive( pPacket->m_pBUFFER, pPacket->m_Size ); pRecord->SerializeMember(lArchive, RANKING_SERIALIZE_CLIENT_SAVE); SetMemberData(m_RqstMissionNo, m_PendingRankingKey, m_RqstRankingType); if( m_iRankingSystemType == 1 ) { m_pUIRankList->UpdateMemberList(); } else { m_pUIPointList->UpdateMemberList(); } } } } break; case CG_MISSION_RANKING_MEMBER_INFO_NAK: { m_bWaitRcvPacket = false; MSG_CG_MISSION_RANKING_MEMBER_INFO_NAK *pPacket = (MSG_CG_MISSION_RANKING_MEMBER_INFO_NAK *)pMsg; _processErrorCode(pPacket->m_dwErrorCode); } break; case CG_MISSION_RANKING_REWARD_ACK: { m_bWaitRcvPacket = false; MSG_CG_MISSION_RANKING_REWARD_ACK *pPacket = (MSG_CG_MISSION_RANKING_REWARD_ACK *)pMsg; ItemManager::Instance()->InsertInventoryTotalInfo(REWARD, pPacket->m_ItemInfo); } break; case CG_MISSION_RANKING_REWARD_NAK: { m_bWaitRcvPacket = false; MSG_CG_MISSION_RANKING_REWARD_NAK *pPacket = (MSG_CG_MISSION_RANKING_REWARD_NAK *)pMsg; _processErrorCode(pPacket->m_dwErrorCode); } break; case CG_MISSION_GET_MISSION_POINT_BRD: { MSG_CG_MISSION_GET_MISSION_POINT_BRD *pPacket = (MSG_CG_MISSION_GET_MISSION_POINT_BRD *)pMsg; g_InterfaceManager.GetInterfaceString(1462 , szTemp ,INTERFACE_STRING_LENGTH); //1462 ÀúÁÖ¹ÞÀº ¿µÈ¥À» ȹµæÇϼ̽À´Ï´Ù(Æ÷ÀÎÆ®·©Å· %dÁ¡ µî·Ï) Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, pPacket->m_dwPoint); GlobalFunc::OutputMsg_SysMsg(szMessage); if(pPacket->m_dwPoint && ((pPacket->m_dwPoint / c_iCheckPoint) >= 1)) // 1000 Á¡ ´ÜÀ§·Î °øÁö¸Þ½ÃÁö Ãâ·Â { //1463 À̹øÈ¸Â÷ Æ÷ÀÎÆ®·©Å·ÀÇ ´©ÀûÆ÷ÀÎÆ®°¡ %dÁ¡À» ³Ñ¾ú½À´Ï´Ù. \n·©Å·Àº ¸¶À»¿¡ ÀÖ´Â Æ÷ÀÎÆ®·©Å· °ü¸®ÀڷκÎÅÍ È®ÀÎÀÌ °¡´ÉÇÕ´Ï´Ù. g_InterfaceManager.GetInterfaceString(1463 , szTemp ,INTERFACE_STRING_LENGTH); Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, pPacket->m_dwPoint); GlobalFunc::OutputMsg_SysMsg(szMessage); } } break; case CG_MISSION_POINT_CANNOT_REGISTER_BRD: { //5471 Æ÷ÀÎÆ®·©Å·:Æ÷ÀÎÆ®·©Å· ·¹º§±¸°£¿¡ Æ÷ÇÔµÇÁö ¾ÊÀº ij¸¯ÅÍ Á¸ÀçÇÕ´Ï´Ù. g_InterfaceManager.GetInterfaceString(5471 , szMessage ,INTERFACE_STRING_LENGTH); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_TOP_SHOW, szMessage); } break; } } break; } } //------------------------------------------------------------------------------ /** */ void uiMissionRankMan::_processErrorCode(DWORD dwErrorCode, eOUTPUT_MSG_TYPE type/* = eOUTPUT_MSG_CHAT*/) { TCHAR szMessage[INTERFACE_STRING_LENGTH] ={0,}; int iMessage = 0; switch(dwErrorCode) { case RC_RANKING_FAILED: // ¾Ë ¼ö ¾ø´Â ¿¡·¯ // 5481 ¹Ì¼Ç·©Å·: ¾Ë ¼ö ¾ø´Â ¿À·ùÇö»óÀÔ´Ï´Ù. iMessage = eST_MISSION_RANK_UNKNOWN_ERROR; break; case RC_RANKING_INVALID_STATE: // À߸øµÈ »óÅ // 5482 ¹Ì¼Ç·©Å·: À߸øµÈ »óÅÂÀÔ´Ï´Ù. iMessage = eST_MISSION_RANK_INVALID_STATUS; break; case RC_RANKING_ALREADY_REWARDED: // ÀÌ¹Ì º¸»ó ¹ÞÀº »óÅ // 5483 ¹Ì¼Ç·©Å·: ÀÌ¹Ì º¸»óÀ» ¹Þ¾Ò½À´Ï´Ù. iMessage = eST_MISSION_RANK_ALREADY_REWARDED; break; case RC_RANKING_DOING_TRANSACTION: // Æ®·£Àè¼Ç ÁøÇàÁß, ÀÌ¹Ì ´Ù¸¥ ÀÛ¾÷ ȤÀº ±× ÀÛ¾÷ÀÌ ÁøÇàÁßÀÓ ( ÆÐŶ 2¹øÀÏ °¡´É¼º! ) // 5484 ¹Ì¼Ç·©Å·: ó¸®ÁßÀÔ´Ï´Ù. iMessage = eST_MISSION_RANK_DOING_TRANSACTION; break; case RC_RANKING_NETWORK_ERROR_FOR_PORTAL: // Æ÷Å» ¼­¹ö°¡ ²÷¾îÁ® ÀÖ´Ù. ³×Æ®¿öÅ© Àå¾Ö·Î ÀϽà ±â´É ÁßÁö // 5485 ¹Ì¼Ç·©Å·: ³×Æ®¿öÅ© Àå¾Ö·Î ÀϽà ±â´ÉÁßÁö iMessage = eST_MISSION_RANK_NETWORK_PROBLEM; break; case RC_RANKING_NETWORK_ERROR_FOR_DBPROXY: // DBP ¼­¹ö°¡ ²÷¾îÁ® ÀÖ´Ù. ³×Æ®¿öÅ© Àå¾Ö·Î ÀϽà ±â´É ÁßÁö // 5485 ¹Ì¼Ç·©Å·: ³×Æ®¿öÅ© Àå¾Ö·Î ÀϽà ±â´ÉÁßÁö iMessage = eST_MISSION_RANK_NETWORK_PROBLEM; break; case RC_RANKING_NOT_SPACE_FOR_REWARD: // º¸»óÀ» ¹ÞÀ» ¾ÆÀÌÅÛ °ø°£ÀÌ ºÎÁ·ÇÏ´Ù. // 5486 ¹Ì¼Ç·©Å·: º¸»óÀ» ¹ÞÀ» Àκ¥Å丮 °ø°£ÀÌ ºÎÁ·ÇÕ´Ï´Ù. iMessage = eST_MISSION_RANK_NEDD_INVENTORY_SPACE; break; // Á¦ÇÑ Á¶°Ç °ü·Ã ¿¡·¯ case RC_RANKING_INSUFFICEINT_PARTY_MEMBER: // ·©Å·À» µî·ÏÇϱâ À§ÇÑ ÆÄƼ¸â¹ö(ÇöÀç5¸í)°¡ ºÎÁ·ÇÏ´Ù. // 5487 ¹Ì¼Ç·©Å·: ·©Å·À» µî·ÏÇϱâ À§ÇÑ ÆÄƼ¿øÀÌ ºÎÁ·ÇÕ´Ï´Ù. iMessage = eST_MISSION_RANK_REQUIRE_PARTY_MEMBER; break; case RC_RANKING_A_CLASS_OBTAIN_MAJORITY: // ÇÑ Å¬·¡½º°¡ °ú¹Ý¼ö¸¦ Â÷Áö ÇÏ¸é ¾ÈµÈ´Ù. // 5488 ¹Ì¼Ç·©Å·: ÇÑ Å¬·¡½º°¡ °ú¹Ý¼ö ÀÌ»óÀ» ±¸¼ºÇؼ­´Â ¾ÈµË´Ï´Ù. iMessage = eST_MISSION_RANK_ONE_CLASS_OVER_HALF; break; case RC_RANKING_DONT_INCLUDE_MISSION_LEVEL_AREA: // ¹Ì¼Ç·¹º§±¸°£¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â Ç÷¹À̾ Á¸ÀçÇÑ´Ù. // 5489 ¹Ì¼Ç·©Å·: ¹Ì¼Ç·¹º§±¸°£¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â ij¸¯ÅͰ¡ Á¸ÀçÇÕ´Ï´Ù. iMessage = eST_MISSION_RANK_INVALID_LEVEL_AREA; break; case RC_RANKING_INVALID_PARAM: // À߸øµÈ ÀÎÀÚÀÔ´Ï´Ù. // 5490 ¹Ì¼Ç·©Å·: À߸øµÈ ÀÎÀÚÀÔ´Ï´Ù. iMessage = eST_MISSION_RANK_INVALID_PARAMETER; break; case RC_RANKING_DONT_INCLUDE_RANKING: // ·©Å·¿¡ Æ÷ÇÔµÇÁö ¾Ê¾Ò½À´Ï´Ù. // 5491 ¹Ì¼Ç·©Å·: ·©Å·¿¡ Æ÷ÇÕµÇÁö ¾Ê¾Ò½À´Ï´Ù. iMessage = eST_MISSION_RANK_NOT_INClUDE; break; case RC_RANKING_INVALID_REWARD_INDEX: // º¸»ó À妽º°¡ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. // ¹Ì¼Ç·©Å·: º¸»ó À妽º°¡ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù 5513 iMessage = 5513; // ½ºÆ®¸µ ¿äû break; case RC_RANKING_SETTLING_INFO: // ·©Å· »êÁ¤Áß, ·©Å·°ü·Ã ¼­ºñ½º ÁßÁöÁß // ¹Ì¼Ç·©Å·: ·©Å· »êÁ¤Áß, ·©Å·°ü·Ã ¼­ºñ½º ÁßÁöÁßÀÔ´Ï´Ù. 5514 iMessage = 5514; // ½ºÆ®¸µ ¿äû break; case RC_RANKING_UNSATISFY_KILL_MONSTER_NUM: //5510 ¹Ì¼Ç·©Å·:ÃÖ¼Ò ¸ó½ºÅÍ Å³ ¼ö°¡ ºÎÁ·ÇÕ´Ï´Ù. iMessage = 5510; break; // ¹Ì¼Ç·©Å·¸¦ º¸»ó¹ÞÀ» À¯Àú¸¦ ãÁö ¸øÇÏ¿´½À´Ï´Ù. case RC_RANKING_NOT_FIND_REWARD_USER: iMessage = 5511; break; // ¹Ì¼Ç·©Å·Á¤º¸¸¦ ãÁö ¸øÇÏ¿´½À´Ï´Ù. case RC_RANKING_NOT_FIND_RANKING_INFO: iMessage = 5512; break; case RC_RANKING_REWARD_FAIL_FATIGUE: iMessage = 6045; break; case RC_RANKING_NOT_REGIST_INVALID_PERIOD: #if defined (_JAPAN) // ÀϺ» ¿¹¿Üó¸® return; #else iMessage = 5512; #endif break; default: iMessage = 5481; // ¹Ì¼Ç·©Å·: ¾Ë ¼ö ¾ø´Â ¿À·ùÇö»óÀÔ´Ï´Ù. break; } g_InterfaceManager.GetInterfaceString( iMessage , szMessage ,INTERFACE_STRING_LENGTH); Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szMessage ); GlobalFunc::OutputMsg_Notice(type, szMessage); } //------------------------------------------------------------------------------ /** */ bool uiMissionRankMan::IsMissionRanking(RANKINGNO no, int iRankSystemType) { RankingManager::LEVEL_AREA* pArea = GET_MISSION_RANK_MANAGER()->FindLVArea(no); if(pArea) { if((int)pArea->m_RankingType == iRankSystemType) return true; } return false; } #endif // _NA_006802_20130704_REORGANIZATION_RANK_SYSTEM