//------------------------------------------------------------------------------ // uiBattleZoneCreate_dialogproc.cpp // (C) 2005 ckbang //------------------------------------------------------------------------------ #include "SunClientPrecompiledHeader.h" #include "uiBattleZoneCreateEp2.h" #include "HeroActionInput.h" #include "Map.h" #include "uiBattleZoneMan/uiBattleZoneMan.h" #include "uiPartyMan/uiPartyMan.h" #include "Application.h" #include "interfacemanager.h" #include "globalfunc.h" #include "uiSystemMan/uiSystemMan.h" #include "Mouse.h" #include "uiToolTipMan/uiToolTipMan.h" #include "ChatDialog.h" #include "uiChatMan/uiChatMan_def.h" #include "MapInfoParser.h" #include "RequireFieldLevelInfoParser.h" #include "hero.h" #include "ItemManager.h" #include "GameConst_Color.h" //------------------------------------------------------------------------------ WzID uiBattleZoneCreateEp2::m_wzId[DIALOG_MAX] = { StrToWzID("B999"), // DLGPOS_BTN_EXIT=0, StrToWzID("TI02"), // DLGPOS_BTN_CREATE, StrToWzID("TI03"), // DLGPOS_BTN_CANCEL, StrToWzID("B000"), // DLGPOS_BTN_PEOPLE_LIMIT, StrToWzID("B001"), // DLGPOS_BTN_ROOM_TYPE, StrToWzID("C001"), // DLGPOS_CHKBTN_CLASS_B, // ¹ö¼­Ä¿ StrToWzID("C002"), // DLGPOS_CHKBTN_CLASS_D, // µå·¡°ï ³ªÀÌÆ® StrToWzID("C003"), // DLGPOS_CHKBTN_CLASS_V, // ¹ß۸® StrToWzID("C004"), // DLGPOS_CHKBTN_CLASS_E, // ¿¤¸®¸àÅ» ¸®½ºÆ® StrToWzID("C005"), // DLGPOS_CHKBTN_CLASS_S, // ½¦µµ¿ì StrToWzID("C008"), // DLGPOS_CHKBTN_MAP_THE_EARTH_OF_TREES_SHADOW, // ³ìÀ½ÀÇ ´ëÁö StrToWzID("C007"), // DLGPOS_CHKBTN_MAP_REST_AREA_OF_SPIRITS, // Á¤·ÉµéÀÇ ½°ÅÍ·Î StrToWzID("C000"), // DLGPOS_CHKBTN_MAP_BOALESS_MOUNTAIN_CHAIN, // º¸¾Æ·¹½º »ê¸Æ StrToWzID("C006"), // DLGPOS_CHKBTN_MAP_VALLY_OF_LIFE, // »ý¸íÀÇ °ñÂ¥±â StrToWzID("T009"), // DLGPOS_TXT_PEOPLE_LIMIT, StrToWzID("T011"), // DLGPOS_TXT_ROOM_TYPE, StrToWzID("T012"), // DLGPOS_TXT_ROOM_TYPE_DESC, StrToWzID("T005"), // DLGPOS_TXT_MIN_LIMIT_LEVEL, StrToWzID("T006"), // DLGPOS_TXT_MAX_LIMIT_LEVEL, StrToWzID("E011"), // DLGPOS_EDT_MIN_LEVEL, StrToWzID("E012"), // DLGPOS_EDT_MAX_LEVEL, StrToWzID("E001"), // DLGPOS_EDT_TITLE, StrToWzID("E002"), // DLGPOS_EDT_PASSWORD, StrToWzID("L001"), // DLGPOS_LST_ROOM_TYPE, StrToWzID("L002"), // DLGPOS_LST_PEOPLE_LIMIT StrToWzID("TI00"), // DLGPOS_TI_SUPER_ROOM_NAME StrToWzID("BT00"), // DLGPOS_BTN_SUPER_ROOM_SELECT StrToWzID("LS00"), // DLGPOS_LIST_SUPER_ROOM StrToWzID("P001"), //DLGPOS_CHKBTN_MAPALL, StrToWzID("CT20"),//DLGPOS_CHKBTN_MAP_0, StrToWzID("CT19"),//DLGPOS_CHKBTN_MAP_1, StrToWzID("CT17"),//DLGPOS_CHKBTN_MAP_2, StrToWzID("CT16"),//DLGPOS_CHKBTN_MAP_3, StrToWzID("CT14"),//DLGPOS_CHKBTN_MAP_4, StrToWzID("CT13"),//DLGPOS_CHKBTN_MAP_5, StrToWzID("CT11"),//DLGPOS_CHKBTN_MAP_6, StrToWzID("CT12"),//DLGPOS_CHKBTN_MAP_7, StrToWzID("CT10"),//DLGPOS_CHKBTN_MAP_8, StrToWzID("CT06"),//DLGPOS_CHKBTN_MAP_9, StrToWzID("CT18"),//DLGPOS_CHKBTN_MAP_10, StrToWzID("CT08"),//DLGPOS_CHKBTN_MAP_11, StrToWzID("CT07"),//DLGPOS_CHKBTN_MAP_12, StrToWzID("CT05"),//DLGPOS_CHKBTN_MAP_13, StrToWzID("CT04"),//DLGPOS_CHKBTN_MAP_14, StrToWzID("CT03"),//DLGPOS_CHKBTN_MAP_15, StrToWzID("CT02"),//DLGPOS_CHKBTN_MAP_16, StrToWzID("CT01"),//DLGPOS_CHKBTN_MAP_17, StrToWzID("CT00"),//DLGPOS_CHKBTN_MAP_18, StrToWzID("M001"),//DLGPOS_CHKBTN_MAP_19, }; //------------------------------------------------------------------------------ /** */ uiBattleZoneCreateEp2::uiBattleZoneCreateEp2(InterfaceManager *pUIMan) : uiBase(pUIMan), m_bInitControls(false) { } //------------------------------------------------------------------------------ /** */ uiBattleZoneCreateEp2::~uiBattleZoneCreateEp2() { this->Release(); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::Init(CDrawBase* pDrawBase) { uiBase::Init(pDrawBase); InitControls(); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::Release() { } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::InitControls() { int i; for (i=0; i(this->getControl(POS_BTN_BEGIN + i)); assert (m_pBtnControls[i]); } for (i=0; i(this->getControl(POS_CHKBTN_CLASS_BEGIN + i)); assert (m_pChkBtnClassControls[i]); } m_pChkBtnMapAll = static_cast(this->getControl(DLGPOS_CHKBTN_MAPALL)); assert (m_pChkBtnMapAll); for (i=0; i(this->getControl(POS_CHKBTN_MAP_BEGIN + i)); assert (m_pChkBtnMapControls[i]); } for (i=0; i(this->getControl(POS_TXT_BEGIN + i)); assert (m_pTxtControls[i]); GlobalFunc::SetCaption (m_pTxtControls[i], _T("")); } for (i=0; i(this->getControl(POS_EDT_BEGIN + i)); assert (m_pEdtControls[i]); } for (i=0; i(this->getControl(POS_LST_BEGIN + i)); assert (m_pLstControls[i]); } m_pListSuperMaster = static_cast( getControl(DLGPOS_LIST_SUPER_ROOM) ); assert(m_pListSuperMaster); m_pButtonSuperMaster = static_cast(getControl(DLGPOS_BTN_SUPER_ROOM_SELECT) ); assert(m_pButtonSuperMaster); m_pTextSuperMaster = static_cast ( getControl( DLGPOS_TI_SUPER_ROOM_NAME ) ); assert(m_pTextSuperMaster); m_pTextSuperMaster->SetFontID(StrToWzID("mn12")); m_bInitControls = true; } //------------------------------------------------------------------------------ /** called to show request */ void uiBattleZoneCreateEp2::OnShowWindow( BOOL val ) { if (val) { if (!this->CheckControls()) { ShowInterface(FALSE); return; } this->Clear(); SetDefaultSuperMasterList(); //UpdatePosition(); uiPartyMan* partyMan = static_cast(this->GetUIMan()->GetUserInterfaceManager(UIMAN_PARTY)); if (partyMan) partyMan->uiClearAll(); GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_LIST )->ShowInterface(FALSE); m_bCheckDistance_NPCMEET = false; // TODO: À̰ŠÁ¦´ë·Î µ¿ÀÛÇϴ°¡? g_HeroInput.ClearPickingTarget(); // º£Æ² Á¸ ¸ñ·Ï UI Ȱ¼ºÈ­ ÇÒ °æ¿ì ¸Ê ·»´õ¸µÀ» OFF if (g_pMap) g_pMap->SetRenderFlag(FALSE); // // support widemode // RECT rcDlgSize; this->GetDialogWZ()->GetDlgSize(&rcDlgSize); POINT pt = g_pApplication->Get2DModeMapping(); RECT rcInterface; rcInterface.left = rcInterface.top = 0; rcInterface.right = pt.x; rcInterface.bottom = pt.y; int x = (rcInterface.right / 2) - (rcDlgSize.right / 2); int y = (rcInterface.bottom / 2) - (rcDlgSize.bottom / 2); MoveWindowWZ( (float)x, (float)y ); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType=eDoType_dialog_battle_create; msg.wParam=InterfaceManager::DIALOG_BATTLEZONE_CREATE; msg.DoSomething=GlobalFunc::DoBattleCreate; g_KeyQueueManager.PushBack(msg); m_pListSuperMaster->ShowWindowWZ(WZ_HIDE); ChatDialog* pChatDlg = GET_CAST_DIALOG(ChatDialog, IM_CHAT_MANAGER::CHAT_DIALOG); if (pChatDlg) { RECT rcClient; this->GetDialogWZ()->GetClientRect(&rcClient); pChatDlg->MoveBattleZonePosition(rcClient); pChatDlg->ShowWindow(FALSE); } } else { uiPartyMan* partyMan = static_cast(this->GetUIMan()->GetUserInterfaceManager(UIMAN_PARTY)); if (partyMan) partyMan->uiShowAll(); // ¸Ê ·»´õ¸µ On if (g_pMap) { g_pMap->SetRenderFlag(TRUE); } g_KeyQueueManager.DeleteMsg(eDoType_dialog_battle_create); this->GetUIMan()->ShowCenterMessageBox( NULL, 1, NULL, FALSE ); } } //------------------------------------------------------------------------------ /** */ //void //uiBattleZoneCreate::UpdatePosition() //{ // //MoveWindowWZ(748, 180); //} //===================================================================================== // DESC: ÄÁÆ®·Ñ·¯ À妽ºÅëÇØ ÇØ´ç¸ÊÁ¤º¸¸¦ ¸®ÅÏÇÑ´Ù. //===================================================================================== POSTYPE uiBattleZoneCreateEp2::getMapAreaInfo(int nPos) { POSTYPE MapArea = eCHKMAP_EP2_MAX; switch (nPos) { case DLGPOS_CHKBTN_MAP_0: // ³ìÀ½ÀÇ ´ëÁö case DLGPOS_CHKBTN_MAP_1: case DLGPOS_CHKBTN_MAP_2: case DLGPOS_CHKBTN_MAP_3: case DLGPOS_CHKBTN_MAP_4: MapArea = eCHKMAP_THE_EARTH_OF_TREES_SHADOW;break; case DLGPOS_CHKBTN_MAP_5: // Á¤·ÉµéÀÇ ½°ÅÍ case DLGPOS_CHKBTN_MAP_6: case DLGPOS_CHKBTN_MAP_7: case DLGPOS_CHKBTN_MAP_8: case DLGPOS_CHKBTN_MAP_9: MapArea = eCHKMAP_REST_AREA_OF_SPIRITS;break; case DLGPOS_CHKBTN_MAP_10: // º¸¾Æ·¹½º »ê¸Æ case DLGPOS_CHKBTN_MAP_11: case DLGPOS_CHKBTN_MAP_12: case DLGPOS_CHKBTN_MAP_13: case DLGPOS_CHKBTN_MAP_14: case DLGPOS_CHKBTN_MAP_15: MapArea = eCHKMAP_BOALESS_MOUNTAIN_CHAIN;break; case DLGPOS_CHKBTN_MAP_16: // »ý¸íÀÇ °ñÂ¥±â case DLGPOS_CHKBTN_MAP_17: case DLGPOS_CHKBTN_MAP_18: case DLGPOS_CHKBTN_MAP_19: MapArea = eCHKMAP_VALLY_OF_LIFE;break; } return MapArea; } //===================================================================================== // DESC: ¹èƲÁ¸ »ý¼ºÃ¢¿¡¼­ ÇØ´çÁö¿ª Ŭ¸¯½Ã ±×Áö¿ªÀ» Ȱ¼ºÈ­½ÃŲ´Ù. //===================================================================================== void uiBattleZoneCreateEp2::clickMapArea(POSTYPE pos) { POSTYPE MapArea = getMapAreaInfo(pos); if(MapArea==eCHKMAP_EP2_MAX)//¸Êüũ¹öưÀÌ ¾Æ´Ï´Ù return; bool canChoice = true; if (!setMapType(MapArea)) { canChoice = false; for (int i=eCHKMAP_THE_EARTH_OF_TREES_SHADOW; iGetMouseX(); int iMouseY = Mouse::Instance()->GetMouseY(); RECT rc; rc = m_pChkBtnMapAll->GetSizeRect(); BOOL bMouseOver = FALSE; if (rc.left <= iMouseX && rc.right >= iMouseX) { if (rc.top <= iMouseY && rc.bottom >= iMouseY) { bMouseOver =TRUE; } } if(bMouseOver==FALSE) m_vMapDesc.clear(); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::MessageProc( SI_MESSAGE * pMessage ) { if (this->IsLock()) return; TCHAR szMessage[INTERFACE_STRING_LENGTH]; switch( pMessage->eResultMsg ) { case RT_MSG_MOUSEOVER: { POSTYPE pos = getCtrlIDToPos( pMessage->dwCtrlID ); refreshToolTip(getMapAreaInfo(pos)); } break; case RT_MSG_LBUTTONCLICK: { POSTYPE pos = getCtrlIDToPos( pMessage->dwCtrlID ); clickMapArea(pos);//ÇØ´çÁö¿ªÈ°¼ºÈ­ switch( pos ) { case DLGPOS_LST_ROOM_TYPE: { int iSel = m_pLstControls[0]->GetCurSel(); if(iSel >= 0) { setDefaultRoomName(iSel); m_pLstControls[0]->ShowWindowWZ(WZ_HIDE); } } break; case DLGPOS_CHKBTN_CLASS_B: case DLGPOS_CHKBTN_CLASS_D: case DLGPOS_CHKBTN_CLASS_E: case DLGPOS_CHKBTN_CLASS_V: case DLGPOS_CHKBTN_CLASS_S: { this->setClassType(pos); } break; case DLGPOS_BTN_ROOM_TYPE: { if (m_pLstControls[0]->GetState() == WZ_SHOW) m_pLstControls[0]->ShowWindowWZ(WZ_HIDE); else { m_pLstControls[0]->ShowWindowWZ(WZ_SHOW); m_pLstControls[0]->SetCurSel(-1); } } break; case DLGPOS_BTN_PEOPLE_LIMIT: { if (m_pLstControls[1]->GetState() == WZ_SHOW) m_pLstControls[1]->ShowWindowWZ(WZ_HIDE); else { m_pLstControls[1]->ShowWindowWZ(WZ_SHOW); m_pLstControls[1]->SetCurSel(-1); } } break; case DLGPOS_BTN_CREATE: { #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP if( GetManager()->IsSpecialType( eROOM_SPECIAL_GUILD_PVP ) ) { if( g_pHero != NULL ) { char str[MAX_ROOMTITLE_LENGTH]; sprintf( str, "%s VS", g_pHero->GetGuildName() ); strncpy( m_cfgs.strTitle, str, MAX_ROOMTITLE_LENGTH-1 ); } } else #endif { // ¹æÁ¦¸ñÀÇ ÃÖ´ë »çÀÌÁî(20 byte)¸¦ ³Ñ¾ú½À´Ï´Ù. if(!GlobalFunc::CompareLimitText(m_pEdtControls[EDT_TITLE], m_cfgs.strTitle, MAX_ROOMTITLE_LENGTH-1, 5791)) break; } // ºñ¹Ð¹øÈ£ÀÇ ÃÖ´ë »çÀÌÁî(7 byte)¸¦ ³Ñ¾ú½À´Ï´Ù. if(!GlobalFunc::CompareLimitText(m_pEdtControls[EDT_PASSWORD], m_cfgs.strPassword, MAX_ROOMPASSWORD_LENGTH-1, 5792)) break; if (!lstrcmp(m_cfgs.strTitle, _T(""))) { this->GetUIMan()->GetInterfaceString(eST_INPUT_ROOM_NAME, szMessage, INTERFACE_STRING_LENGTH); uiSystemMan * pSystemMan = (uiSystemMan *)g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM); if(pSystemMan) pSystemMan->Sys_VerifyLock(szMessage); } else { // ±ÝÁö´Ü¾î check if(GlobalFunc::IsSlang(m_cfgs.strTitle, false) == TRUE) { this->GetUIMan()->GetInterfaceString( eST_CANNOT_USE_WORD, szMessage, MAX_MESSAGE_LENGTH ); uiSystemMan * pSystemMan = (uiSystemMan *)g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM); if(pSystemMan) pSystemMan->Sys_VerifyLock(szMessage); break; } //! ¹èƲÁ¸ »ý¼º½Ã ³¯°³ Á¢À½ g_pHero->SendWingsControlByRider(false, false); g_pHero->SendWingsControlByAccessory(false, false); m_pEdtControls[EDT_TITLE]->SetFocusWZ(); this->checkEditMinMaxLevel(); this->GetManager()->NET_SEND_MSG_CG_ZONE_LOBBY_CREATE_SYN(); } } break; case DLGPOS_BTN_EXIT: case DLGPOS_BTN_CANCEL: { this->ExitZoneCreate(); } break; case DLGPOS_EDT_TITLE: { GlobalFunc::SetText(m_pEdtControls[EDT_TITLE], _T("")); } break; case DLGPOS_BTN_SUPER_ROOM_SELECT: { if( m_pListSuperMaster->GetState() == WZ_SHOW ) { m_pListSuperMaster->ShowWindowWZ(WZ_HIDE); } else { m_pListSuperMaster->ShowWindowWZ(WZ_SHOW); } } break; case DLGPOS_LIST_SUPER_ROOM: { int iSel = m_pListSuperMaster->GetCurSel(); if( iSel >= 0 ) { SetTextCurrentSuperMasterType(iSel); #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP setMapType(m_cfgs.mapType); #endif m_pListSuperMaster->ShowWindowWZ(WZ_HIDE); } } break; } } break; default: { SolarDialog::MessageProc( pMessage ); } break; } } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::OnUpdateSolarDialog() { TCHAR szMessage[INTERFACE_STRING_LENGTH]; if (m_cfgs.mapType == eCHKMAP_EP2_MAX) { // ·¹º§Á¦ÇÑ¿¡ ÀÇÇØ ¼±ÅÃÇÒ ¼ö ÀÖ´Â ¸ÊÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.\n´Ù¸¥ ¸ðµå¸¦ ¼±ÅÃÇϽðųª ¸¶À» À̵¿À» ÅëÇØ ÀÚ½ÅÀÇ ·¹º§¿¡ ¸Â´Â ¸ÊÀ» ¼±ÅÃÇØÁÖ¼¼¿ä : 5623 g_InterfaceManager.GetInterfaceString(eST_LIMIT_LEVEL_AND_NO_SELET_MAP , szMessage, INTERFACE_STRING_LENGTH ); this->m_pBtnControls[1]->ShowWindowWZ(WZ_HIDE); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CENTER_SHOW, szMessage); } else { this->m_pBtnControls[1]->ShowWindowWZ(WZ_SHOW); this->GetUIMan()->ShowCenterMessageBox( NULL, 1, NULL, FALSE ); } this->updateCheckBtns(); this->updateRoomType(); this->updatePeopleLimitType(); this->updateLevelLimit(); this->checkEditMinMaxLevel(); this->checkMapMouseOver(); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::OnRenderSolarDialog() { this->renderRoomTypeDescription(); renderTooltip(); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::renderTooltip() { int iMouseX = Mouse::Instance()->GetMouseX(); int iMouseY = Mouse::Instance()->GetMouseY(); // ½ºÅµÃ³¸® // ÀÎÅÍÆäÀ̽º¿¡¼­ Dialog ¹ÙÅÁ¿¡¼­´Â Mouse Over°¡ ¿ÀÁö ¾Ê´Â´Ù. BOOL bMouseOver = FALSE; int iTooltipStringCode = 0; for (POSTYPE a = DLGPOS_CHKBTN_CLASS_B; a < POS_CHKBTN_CLASS_END; a++) { CControlWZ * pControl = getControl(a); if( pControl == NULL ) continue; RECT rc = pControl->GetSizeRect(); if (rc.left <= iMouseX && rc.right >= iMouseX) { if (rc.top <= iMouseY && rc.bottom >= iMouseY) { bMouseOver = TRUE; switch(a) { case DLGPOS_CHKBTN_CLASS_B: iTooltipStringCode = eST_CHARACTER_CLASS_NAME_BERSERKER; break; case DLGPOS_CHKBTN_CLASS_D: iTooltipStringCode = eST_CHARACTER_CLASS_NAME_DRAGON; break; case DLGPOS_CHKBTN_CLASS_E: iTooltipStringCode = eST_CHARACTER_CLASS_NAME_MAGICIAN; break; case DLGPOS_CHKBTN_CLASS_V: iTooltipStringCode = eST_CHARACTER_CLASS_NAME_VALKYRIE; break; case DLGPOS_CHKBTN_CLASS_S: iTooltipStringCode = eST_CHARACTER_CLASS_NAME_SHADOW; break; default: return; } } } } if ( !bMouseOver ) { iTooltipStringCode = 0; m_MouseOverObject.eMouseOverType = eMOUSE_OVER_MAX; return; } if(iTooltipStringCode) { uiToolTipMan* pUIMan = (uiToolTipMan*)g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP); if(pUIMan) { pUIMan->RegisterTooltipWithStringCode(iTooltipStringCode); pUIMan->SetTooltipDialogID(GetDialogKey()); } } } #pragma warning ( push ) #pragma warning(disable : 4800) //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::ExitZoneCreate() { ShowInterface(FALSE); GET_DIALOG( IM_BATTLEZONE_MANAGER::BATTLEZONE_LIST )->ShowInterface( TRUE ); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::Clear() { if(!m_bInitControls) return; m_cfgs.clear(); #ifdef _CN_EXCECPT_MISSION m_cfgs.roomType = 0; #else m_cfgs.roomType = eCREATE_BATTLE_MISSION_TYPE; #endif//_CN_EXCECPT_MISSION bool canChoice = true; if (!setMapType(m_cfgs.mapType)) { canChoice = false; for (int i=0; iSetFontID(StrToWzID("mn12")); m_pEdtControls[EDT_MAX_LEVEL]->SetFontID(StrToWzID("mn12")); m_pEdtControls[EDT_MIN_LEVEL]->SetLimitText(3); m_pEdtControls[EDT_MAX_LEVEL]->SetLimitText(3); m_pEdtControls[EDT_TITLE]->SetFontID(StrToWzID("mn12")); m_pEdtControls[EDT_TITLE]->SetLimitText(MAX_ROOMTITLE_LENGTH-1); m_pEdtControls[EDT_PASSWORD]->SetFontID(StrToWzID("mn12")); m_pEdtControls[EDT_PASSWORD]->SetLimitText(MAX_ROOMPASSWORD_LENGTH-1); m_pEdtControls[EDT_PASSWORD]->SetColorCaret(c_InterfaceCaretColor); GlobalFunc::SetText(m_pEdtControls[EDT_MIN_LEVEL], _T("")); GlobalFunc::SetText(m_pEdtControls[EDT_MAX_LEVEL], _T("")); GlobalFunc::SetText(m_pEdtControls[EDT_TITLE], _T("")); GlobalFunc::SetText(m_pEdtControls[EDT_PASSWORD], _T("")); m_pEdtControls[EDT_PASSWORD]->ShowWindowWZ(WZ_SHOW); //gs_bug_fix:È­¸éÀÌ ¿­¸°»óÅ¿¡¼­¸¸ ŸÀÌÆ²Ã¢¿¡ Æ÷Ä¿½º¸¦ ¸ÂÃá´Ù if(this->IsVisibleWindow()) { GlobalFunc::SetFocus((SolarDialog *)this, m_pEdtControls[EDT_TITLE]); } #ifdef _GS_GSP_HIDE_BATTLEZONE_LIST_BTN m_pBtnControls[4]->ShowWindowWZ(WZ_HIDE); #else m_pBtnControls[4]->ShowWindowWZ(WZ_SHOW); #endif// setDefaultRoomName(); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::clearModeList() { TCHAR szMessage[INTERFACE_STRING_LENGTH]; m_pLstControls[0]->SetColorSelBar(RGBA(0,0,0,0)); m_pLstControls[0]->SetSellHeight(16); m_pLstControls[0]->SetUseReport(false); m_pLstControls[0]->SetReportUseCnt(0); m_pLstControls[0]->SetHideReportRender(true); m_pLstControls[0]->DeleteItemAll(); m_pLstControls[0]->SetBeginDrawIndex(0); for (int i=0; iInsertItemBack(); this->GetUIMan()->GetInterfaceString(m_cfgs.vRoomCode[i], szMessage, INTERFACE_STRING_LENGTH); GlobalFunc::SetItem(m_pLstControls[0], idx, szMessage, StrToWzID("mn12"), DT_CENTER, RGBA(0,0,0,0), // BKColor RGBA(255, 255, 255, 255), // TextColor RGBA(255, 255, 255, 255) // SelTextColor ); } m_pLstControls[0]->ShowWindowWZ(WZ_HIDE); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::clearPeopleList() { TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; m_pLstControls[1]->SetColorSelBar(RGBA(0,0,0,0)); m_pLstControls[1]->SetSellHeight(16); m_pLstControls[1]->SetUseReport(false); m_pLstControls[1]->SetReportUseCnt(0); m_pLstControls[1]->SetHideReportRender(true); m_pLstControls[1]->DeleteItemAll(); m_pLstControls[1]->SetBeginDrawIndex(0); for (int i=0; iInsertItemBack(); Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), (i + 1)); GlobalFunc::SetItem(m_pLstControls[1], idx, szMessage, StrToWzID("mn12"), DT_CENTER, RGBA (0,0,0,0), // BKColor RGBA(255, 255, 255, 255), // TextColor RGBA(255, 255, 255, 255) // SelTextColor ); } m_pLstControls[1]->ShowWindowWZ(WZ_HIDE); } //------------------------------------------------------------------------------ /** */ uiBattleZoneMan* uiBattleZoneCreateEp2::GetManager() { uiBattleZoneMan* battleZoneMan = static_cast(this->GetUIMan()->GetUserInterfaceManager(UIMAN_BATTLEZONE)); assert (battleZoneMan); return battleZoneMan; } //------------------------------------------------------------------------------ /** */ bool uiBattleZoneCreateEp2::checkValidMap(MAPCODE fromCode, MAPCODE toCode) { const sMAPINFO* fromMapInfo = MapInfoParser::Instance()->FindMapInfo(fromCode); if (!fromMapInfo) return false; const sMAPINFO* toMapInfo = MapInfoParser::Instance()->FindMapInfo(toCode); if (!toMapInfo) return false; LEVELTYPE lv; if (g_pHero) { lv = g_pHero->GetLevel(); } else { lv = 1; } if (toMapInfo->minLV > (lv+1) || toMapInfo->maxLV < lv) return false; switch (m_cfgs.roomType) { #ifdef _CN_EXCECPT_MISSION //no operation #else case eCREATE_BATTLE_MISSION_TYPE: { //! 2011.5.6 / i4u4me / ½ºÅ©¸³Æ®¿¡¼­ FileVersion Çʵå Á¦°Å //! fromMapInfo->FileVersion >= 1.3 ÀÓ //if(1.3 <= fromMapInfo->FileVersion) { for(int i = 0; i < sMAPINFO::MAX_MISSION_MAP_NUM_V1_3; ++i) { if(fromMapInfo->byMissionMapVec[i] == toMapInfo->MapKind) return true; } } //else //{ // for( int i=0; i < sMAPINFO::MAX_MISION_MAP_NUM; i++ ) // { // if (fromMapInfo->byMissionMap[i] == toMapInfo->MapCode) // { // return true; // } // } //} } break; #endif//_CN_EXCECPT_MISSION(¹Ì¼Ç¼±ÅÃÁ¦°Å) case eCREATE_BATTLE_PVP_TYPE: { //! 2011.5.6 / i4u4me / ½ºÅ©¸³Æ®¿¡¼­ FileVersion Çʵå Á¦°Å //! fromMapInfo->FileVersion >= 1.3 ÀÓ //if(1.3 <= fromMapInfo->FileVersion) { for(int i = 0; i < sMAPINFO::MAX_PVP_MAP_NUM_V1_3; ++i) { if(fromMapInfo->wPVPMapVec[i] == toMapInfo->MapKind) return true; } } //else //{ // for( int i=0; i < sMAPINFO::MAX_PVP_MAP_NUM; i++ ) // { // if (fromMapInfo->wPVPMap[i] == toMapInfo->MapCode) // { // return true; // } // } //} } break; #ifndef _EXCECPT_HUNTING_001011 case eCREATE_BATTLE_CHUNTING: { //! 2011.5.6 / i4u4me / ½ºÅ©¸³Æ®¿¡¼­ FileVersion Çʵå Á¦°Å //! fromMapInfo->FileVersion >= 1.3 ÀÓ //if(1.3 <= fromMapInfo->FileVersion) { for(int i = 0; i < sMAPINFO::MAX_CHUNTING_MAP_NUM_V1_3; ++i) { if(fromMapInfo->wCHuntingMapVec[i] == toMapInfo->MapKind) return true; } } //else //{ // for( int i=0; i < sMAPINFO::MAX_CHUNTING_MAP_NUM; i++ ) // { // if (fromMapInfo->wCHuntingMap[i] == toMapInfo->MapCode) // { // return true; // } // } //} } break; #endif } return false; } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::checkEditMinMaxLevel() { TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; if (!m_pEdtControls[EDT_MIN_LEVEL]->HaveFocus()) { GlobalFunc::GetText(m_pEdtControls[EDT_MIN_LEVEL], szMessage, 4); szMessage[4] = 0; bool allAlpha = false; int i; for (i=0; i=_T('0') && szMessage[i]<=_T('9')) { allAlpha = true; } } int value = _ttoi(szMessage); if (allAlpha) { if (m_cfgs.maxLevel < value) { m_cfgs.minLevel = m_cfgs.maxLevel-1; } else if (m_cfgs.fix_minLevel > value) { m_cfgs.minLevel = m_cfgs.fix_minLevel; } else { m_cfgs.minLevel = value; } } Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), m_cfgs.minLevel); GlobalFunc::SetText(m_pEdtControls[EDT_MIN_LEVEL], szMessage); } if (!m_pEdtControls[EDT_MAX_LEVEL]->HaveFocus()) { GlobalFunc::GetText(m_pEdtControls[EDT_MAX_LEVEL], szMessage, 4); szMessage[4] = 0; bool allAlpha = false; int i; for (i=0; i=_T('0') && szMessage[i]<=_T('9')) { allAlpha = true; } } int value = _ttoi(szMessage); if (allAlpha) { if (m_cfgs.minLevel > value) { m_cfgs.maxLevel = m_cfgs.minLevel+1; } else if (m_cfgs.fix_maxLevel < value) { m_cfgs.maxLevel = m_cfgs.fix_maxLevel; } else { m_cfgs.maxLevel = value; } } Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), m_cfgs.maxLevel); GlobalFunc::SetText(m_pEdtControls[EDT_MAX_LEVEL], szMessage); } } //------------------------------------------------------------------------------ /** */ bool uiBattleZoneCreateEp2::setMapType(WORD wType) { bool setIsFine = false; switch (m_cfgs.roomType) { #ifdef _CN_EXCECPT_MISSION //no operation #else case eCREATE_BATTLE_MISSION_TYPE: { setIsFine = setMapTypeMission(wType); } break; #endif//_CN_EXCECPT_MISSION case eCREATE_BATTLE_PVP_TYPE: { setIsFine = setMapTypePVP(wType); } break; #ifndef _EXCECPT_HUNTING_001011 case eCREATE_BATTLE_CHUNTING: { setIsFine = setMapTypeCHunting(wType); } break; #endif } if (!setIsFine) { // couldn't select it. } else m_cfgs.mapType = wType; return setIsFine; } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::setMapTypeInfo(const sMAPINFO* mapInfo) { assert (mapInfo); if (!mapInfo) return; m_cfgs.mapCode = mapInfo->MapCode; m_cfgs.peopleType = mapInfo->byMaxUserNum-1; #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP if( GetManager()->IsSpecialType(eROOM_SPECIAL_GUILD_PVP) ) { m_cfgs.peopleType = MAX_GUILD_PVP_JOIN_MEMBER -1; } #endif m_cfgs.fix_peopleType = m_cfgs.peopleType; #ifdef _CN_EXCECPT_MISSION #ifndef _EXCECPT_HUNTING_001011 if (g_pHero && m_cfgs.roomType == eCREATE_BATTLE_CHUNTING) { if (mapInfo->minLV < g_pHero->GetLevel() - HUNTING_JOIN_LEVEL_OFFSET) m_cfgs.minLevel = g_pHero->GetLevel() - HUNTING_JOIN_LEVEL_OFFSET; else m_cfgs.minLevel = mapInfo->minLV; m_cfgs.fix_minLevel = m_cfgs.minLevel; if (mapInfo->maxLV > g_pHero->GetLevel() + HUNTING_JOIN_LEVEL_OFFSET) m_cfgs.maxLevel = g_pHero->GetLevel() + HUNTING_JOIN_LEVEL_OFFSET; else m_cfgs.maxLevel = mapInfo->maxLV; m_cfgs.fix_maxLevel = m_cfgs.maxLevel; } else { m_cfgs.minLevel = mapInfo->minLV; m_cfgs.fix_minLevel = m_cfgs.minLevel; m_cfgs.maxLevel = mapInfo->maxLV; m_cfgs.fix_maxLevel = m_cfgs.maxLevel; } #else//ÀϺ» ÇåÆÃ¸ñ·ÏÁ¦°Å m_cfgs.minLevel = mapInfo->minLV; m_cfgs.fix_minLevel = m_cfgs.minLevel; m_cfgs.maxLevel = mapInfo->maxLV; m_cfgs.fix_maxLevel = m_cfgs.maxLevel; #endif #else//else _CN_EXCECPT_MISSION if( g_pHero && m_cfgs.roomType == eCREATE_BATTLE_MISSION_TYPE) { m_cfgs.minLevel = mapInfo->minLV; m_cfgs.fix_minLevel = mapInfo->minLV; if(TUTO_MISSION == mapInfo->MapCode)//Æ©Å丮¾ó ¸ÊÀÌ ¸Â´Ù¸é. m_cfgs.maxLevel = mapInfo->maxLV;//Æ©Å丮¾ó Á¦ÇÑ ·¹º§. else m_cfgs.maxLevel = min( g_pHero->GetLevel() + MISSION_LEVEL_JOIN_OFFSET , mapInfo->maxLV); m_cfgs.fix_maxLevel = m_cfgs.maxLevel; } #ifndef _EXCECPT_HUNTING_001011 else if (g_pHero && m_cfgs.roomType == eCREATE_BATTLE_CHUNTING) { if (mapInfo->minLV < g_pHero->GetLevel() - HUNTING_JOIN_LEVEL_OFFSET) m_cfgs.minLevel = g_pHero->GetLevel() - HUNTING_JOIN_LEVEL_OFFSET; else m_cfgs.minLevel = mapInfo->minLV; m_cfgs.fix_minLevel = m_cfgs.minLevel; if (mapInfo->maxLV > g_pHero->GetLevel() + HUNTING_JOIN_LEVEL_OFFSET) m_cfgs.maxLevel = g_pHero->GetLevel() + HUNTING_JOIN_LEVEL_OFFSET; else m_cfgs.maxLevel = mapInfo->maxLV; m_cfgs.fix_maxLevel = m_cfgs.maxLevel; } #endif else { m_cfgs.minLevel = mapInfo->minLV; m_cfgs.fix_minLevel = m_cfgs.minLevel; m_cfgs.maxLevel = mapInfo->maxLV; m_cfgs.fix_maxLevel = m_cfgs.maxLevel; } #endif//_CN_EXCECPT_MISSION TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), m_cfgs.minLevel); GlobalFunc::SetText(m_pEdtControls[EDT_MIN_LEVEL], szMessage); Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), m_cfgs.maxLevel); GlobalFunc::SetText(m_pEdtControls[EDT_MAX_LEVEL], szMessage); } //------------------------------------------------------------------------------ /** */ bool uiBattleZoneCreateEp2::setMapTypeMission(WORD wType) { const sMAPINFO* villMapInfo; if (GENERALPARAM->IsTestUIScene()) villMapInfo = MapInfoParser::Instance()->FindMapInfo(10001); else villMapInfo = MapInfoParser::Instance()->FindMapInfo(g_pMap->GetCurrentFieldID()); if (!villMapInfo) return false; int groupCode = 2 + (wType + eCHKMAP_CODE_MISSION);// EP2´Â kind°¡ 9ºÎÅÍ ½ÃÀÛ 7+2 MapGroup* pMapGroup = MapInfoParser::Instance()->GetMapGroup(groupCode); if (!pMapGroup) return false; // ÇØ´ç ¸ãÀ» »ý¼ºÇÒ¶§ ÇØ´ç ±×·ì¿¡ Á¸ÀçÇÏ´Â ¸ãÀ» °ñ¶ó¼­ »ý¼ºÇÑ´Ù. // ¹Ì¼Ç´ã´çÀÚ(±è¹Ì¼÷) ¿äûÀ¸·Î µðÆúÆ® ¸ãÀ» ¼­ºê 1, 2, 3, 4... ¸¶Áö¸·¿¡ ¸ÞÀÎ ¹Ì¼Ç(0)À» ã´Â½ÄÀ¸·Î ÇÔ. size_t MapGroupCnt = pMapGroup->GetMapInfoHash().size(); if ( 0 == MapGroupCnt ) { return false; } sMAPINFO* goMapInfo = NULL; //¼­ºê¹Ì¼ÇÀ» ¸ÕÀúã´Â´Ù. for ( size_t i = 0; i < MapGroupCnt; ++i ) { goMapInfo = pMapGroup->GetMapInfoIndex(i+1); if ( goMapInfo ) break; } //¼­ºê¹Ì¼ÇÀÌ ¾ø´Ù´Â ¸ÞÀÎÀ¸·Î ¼³Á¤ if (!goMapInfo) { // ¸ÞÀÎ¹Ì¼Ç È®ÀÎ. goMapInfo = pMapGroup->GetMapInfoIndex(0); } if ( !goMapInfo ) return false; if (checkValidMap(villMapInfo->MapCode, goMapInfo->MapCode)) { setMapTypeInfo(goMapInfo); return true; } return false; } //------------------------------------------------------------------------------ /** */ bool uiBattleZoneCreateEp2::setMapTypeHunting(WORD wType) { const sMAPINFO* villMapInfo; if (GENERALPARAM->IsTestUIScene()) villMapInfo = MapInfoParser::Instance()->FindMapInfo(10001); else villMapInfo = MapInfoParser::Instance()->FindMapInfo(g_pMap->GetCurrentFieldID()); if (!villMapInfo) return false; int groupCode = 2 + (wType + eCHKMAP_CODE_HUNTING); MapGroup* pMapGroup = MapInfoParser::Instance()->GetMapGroup(groupCode); if (!pMapGroup) return false; sMAPINFO* goMapInfo = pMapGroup->GetMapInfoIndex(0); if (!goMapInfo) return false; if (checkValidMap(villMapInfo->MapCode, goMapInfo->MapCode)) { setMapTypeInfo(goMapInfo); return true; } return false; } //------------------------------------------------------------------------------ /** */ bool uiBattleZoneCreateEp2::setMapTypePVP(WORD wType) { const sMAPINFO* villMapInfo; if (GENERALPARAM->IsTestUIScene()) villMapInfo = MapInfoParser::Instance()->FindMapInfo(10001); else villMapInfo = MapInfoParser::Instance()->FindMapInfo(g_pMap->GetCurrentFieldID()); if (!villMapInfo) return false; int groupCode = 2 + (wType + eCHKMAP_CODE_PVP); MapGroup* pMapGroup = MapInfoParser::Instance()->GetMapGroup(groupCode); if (!pMapGroup) return false; sMAPINFO* goMapInfo = pMapGroup->GetMapInfoIndex(0); if (!goMapInfo) return false; if (checkValidMap(villMapInfo->MapCode, goMapInfo->MapCode)) { setMapTypeInfo(goMapInfo); return true; } return false; } bool _sort_chunting_index_low_to_lv(stCHuntingMap a, stCHuntingMap b) { return (a.iRequireMinLV < b.iRequireMinLV); } //------------------------------------------------------------------------------ /** */ bool uiBattleZoneCreateEp2::setMapTypeCHunting(WORD wType) { const sMAPINFO* villMapInfo; if (GENERALPARAM->IsTestUIScene()) villMapInfo = MapInfoParser::Instance()->FindMapInfo(10001); else villMapInfo = MapInfoParser::Instance()->FindMapInfo(g_pMap->GetCurrentFieldID()); if (!villMapInfo) return false; int groupCode = 2 + (wType + eCHKMAP_CODE_CHUNTING); MapGroup* pMapGroup = MapInfoParser::Instance()->GetMapGroup(groupCode); if (!pMapGroup) return false; std::vector vecCHuntingMapIndex; vecCHuntingMapIndex.clear(); sMAPINFO_HASH & mapHash = pMapGroup->GetMapInfoHash(); sMAPINFO_HASH::const_iterator itr = mapHash.begin(); sMAPINFO * pMapInfo = NULL; #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP BOOL FoundGuildPVP = FALSE; if (GetManager()->IsSpecialType(eROOM_SPECIAL_GUILD_PVP) ) { FoundGuildPVP = TRUE; } #endif while ( itr != mapHash.end()) { pMapInfo = itr->second; itr++; BASE_RequireFieldLevelInfo * pInfo = NULL; #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP pInfo = RequireFieldLevelInfoParser::Instance()->GetRequireFieldLevelInfo( (WORD)pMapInfo->MapCode, (BYTE)0, FoundGuildPVP ); #else pInfo = RequireFieldLevelInfoParser::Instance()->GetRequireFieldLevelInfo( (WORD)pMapInfo->MapCode, (BYTE)0 ); #endif int iRequireMinLV = 0; if (pInfo) { iRequireMinLV = pInfo->m_wMinlv; } else { iRequireMinLV = pMapInfo->minLV; } stCHuntingMap sCh; sCh.MapCode = pMapInfo->MapCode; sCh.iRequireMinLV = iRequireMinLV; #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP if(FoundGuildPVP && pMapInfo->EntranceItemCode == 0) continue; #endif vecCHuntingMapIndex.push_back(sCh); } std::sort( vecCHuntingMapIndex.begin(), vecCHuntingMapIndex.end(), _sort_chunting_index_low_to_lv ); MAPCODE mapcode = vecCHuntingMapIndex[0].MapCode; const sMAPINFO* goMapInfo = MapInfoParser::Instance()->FindMapInfo(mapcode); if (!goMapInfo) return false; if (checkValidMap(villMapInfo->MapCode, goMapInfo->MapCode)) { this->GetManager()->ClearPendings(); setMapTypeInfo(goMapInfo); return true; } return false; } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::setClassType(POSTYPE pos) { if (!g_pHero) return; eCLASS_TYPE classLimit = m_cfgs.classLimit; eCLASS_TYPE comp_classLimit; switch (pos) { case DLGPOS_CHKBTN_CLASS_B: { comp_classLimit = eCLASS_BERSERKER; } break; case DLGPOS_CHKBTN_CLASS_D: { comp_classLimit = eCLASS_DRAGON; } break; case DLGPOS_CHKBTN_CLASS_V: { comp_classLimit = eCLASS_VALKYRIE; } break; case DLGPOS_CHKBTN_CLASS_E: { comp_classLimit = eCLASS_ELEMENTALIST; } break; case DLGPOS_CHKBTN_CLASS_S: { comp_classLimit = eCLASS_SHADOW; } break; default: assert (!"unknown class type"); return; } eCLASS_TYPE hero_classLimit; switch (g_pHero->GetClass()) { case eCHAR_BERSERKER: { hero_classLimit = eCLASS_BERSERKER; } break; case eCHAR_DRAGON: { hero_classLimit = eCLASS_DRAGON; } break; case eCHAR_VALKYRIE: { hero_classLimit = eCLASS_VALKYRIE; } break; case eCHAR_ELEMENTALIST: { hero_classLimit = eCLASS_ELEMENTALIST; } break; case eCHAR_SHADOW: { hero_classLimit = eCLASS_SHADOW; } break; default: assert (!"unknown class type"); return; } // compare to hero classlimit if (hero_classLimit == comp_classLimit) { TCHAR szMessage[INTERFACE_STRING_LENGTH]; g_InterfaceManager.GetInterfaceString(eST_CAN_NOT_LIMIT_OWN_CLASS,szMessage,INTERFACE_STRING_LENGTH); GlobalFunc::OutputMsg_Guide(eOUTPUT_MSG_CENTER_SHOW, szMessage); return; } // modify classlimit bool toggleClassLimit = !(classLimit & comp_classLimit); if (toggleClassLimit) { classLimit = static_cast(classLimit | comp_classLimit); } else { classLimit = static_cast(classLimit & ~comp_classLimit); } m_cfgs.classLimit = classLimit; } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::updateCheckBtns() { for (int i=POS_CHKBTN_CLASS_BEGIN; iSetCheckState((bool)(m_cfgs.classLimit & eCLASS_BERSERKER)); break; case DLGPOS_CHKBTN_CLASS_D: pClassChkBtn->SetCheckState((bool)(m_cfgs.classLimit & eCLASS_DRAGON)); break; case DLGPOS_CHKBTN_CLASS_V: pClassChkBtn->SetCheckState((bool)(m_cfgs.classLimit & eCLASS_VALKYRIE)); break; case DLGPOS_CHKBTN_CLASS_E: pClassChkBtn->SetCheckState((bool)(m_cfgs.classLimit & eCLASS_ELEMENTALIST)); break; case DLGPOS_CHKBTN_CLASS_S: { pClassChkBtn->SetCheckState((bool)(m_cfgs.classLimit & eCLASS_SHADOW)); #ifdef __CN_CREATE_BLOCK_SHADOW pClassChkBtn->EnableWindowWZ(FALSE); #endif//__CN_CREATE_BLOCK_SHADOW } break; default: assert (!"unknown class type"); break; } } for (i=eCHKMAP_THE_EARTH_OF_TREES_SHADOW; iSetCheckState(false); } if (m_cfgs.mapType != eCHKMAP_EP2_MAX) m_pChkBtnMapControls[m_cfgs.mapType - eCHKMAP_THE_EARTH_OF_TREES_SHADOW]->SetCheckState(true); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::updateRoomType() { TCHAR szMessage[INTERFACE_STRING_LENGTH]; g_InterfaceManager.GetInterfaceString( m_cfgs.vRoomCode[m_cfgs.roomType], szMessage, INTERFACE_STRING_LENGTH ); GlobalFunc::SetCaption(m_pTxtControls[1], szMessage); if (this->m_pLstControls[0]->GetState() != WZ_SHOW) return; m_pLstControls[0]->SetColorSelBar(RGBA(0,0,0,0)); m_pLstControls[0]->SetSellHeight(24); m_pLstControls[0]->SetUseReport(false); m_pLstControls[0]->SetReportUseCnt(0); m_pLstControls[0]->SetHideReportRender(true); m_pLstControls[0]->DeleteItemAll(); m_pLstControls[0]->SetBeginDrawIndex(0); for (int i=0; iInsertItemBack(); this->GetUIMan()->GetInterfaceString(m_cfgs.vRoomCode[i], szMessage, INTERFACE_STRING_LENGTH); GlobalFunc::SetItem(m_pLstControls[0], idx, szMessage, StrToWzID("mn12"), DT_CENTER | DT_BOTTOM, RGBA(0,0,0,0), // BKColor RGBA(255, 255, 255, 255), // TextColor RGBA(255, 255, 255, 255) // SelTextColor ); } int curSel = this->m_pLstControls[0]->GetCurSel(); if (curSel != -1) { m_cfgs.roomType = curSel; #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP SetDefaultSuperMasterList(); #endif bool canChoice = true; if (!setMapType(m_cfgs.mapType)) { canChoice = false; for (int i=0; iShowWindowWZ(WZ_SHOW); TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; m_pLstControls[1]->SetColorSelBar(RGBA(0,0,0,0)); m_pLstControls[1]->SetSellHeight(16); m_pLstControls[1]->SetUseReport(false); m_pLstControls[1]->SetReportUseCnt(0); m_pLstControls[1]->SetHideReportRender(true); m_pLstControls[1]->DeleteItemAll(); m_pLstControls[1]->SetBeginDrawIndex(0); for (int i=0; iInsertItemBack(); DWORD color; if (m_cfgs.fix_peopleType>=i) { color = RGBA(255, 255, 255, 255); } else { color = RGBA(255, 0, 0, 255); } Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), (i + 1)); GlobalFunc::SetItem(m_pLstControls[1], idx, szMessage, StrToWzID("mn12"), DT_CENTER | DT_BOTTOM, RGBA(0,0,0,0), // BKColor color, // TextColor RGBA(255, 255, 255, 255) // SelTextColor ); } Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), m_cfgs.peopleType+1); GlobalFunc::SetCaption(m_pTxtControls[0], szMessage); if (this->m_pLstControls[1]->GetState() != WZ_SHOW) return; int curSel = this->m_pLstControls[1]->GetCurSel(); if (curSel != -1) { if (m_cfgs.fix_peopleType >= curSel) m_cfgs.peopleType = curSel; else m_cfgs.peopleType = m_cfgs.fix_peopleType; m_pLstControls[1]->ShowWindowWZ(WZ_HIDE); } } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::updatePeopleLimitTypeTemp() { m_cfgs.peopleType = 0; m_pBtnControls[3]->ShowWindowWZ(WZ_HIDE); TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), m_cfgs.peopleType+1); GlobalFunc::SetCaption(m_pTxtControls[0], szMessage); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::updateLevelLimit() { const sMAPINFO* mapInfo = MapInfoParser::Instance()->FindMapInfo(m_cfgs.mapCode); if (!mapInfo) { GlobalFunc::SetCaption (m_pTxtControls[3], _T("1")); GlobalFunc::SetCaption (m_pTxtControls[4], _T("100")); return; } TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), mapInfo->minLV); GlobalFunc::SetCaption (m_pTxtControls[3], szMessage); Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%d"), mapInfo->maxLV); GlobalFunc::SetCaption (m_pTxtControls[4], szMessage); } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::renderRoomTypeDescription() { TCHAR szMessage[INTERFACE_STRING_LENGTH]; g_InterfaceManager.GetInterfaceString( m_cfgs.vRoomDescCode[m_cfgs.roomType], szMessage, INTERFACE_STRING_LENGTH ); std::vector vstr; if( !m_pTxtControls[2]) return; RECT rtList = m_pTxtControls[2]->GetSize(); GlobalFunc::ProcessWordWrapByFontSize(&vstr , szMessage , StrToWzID("m216") , _tcslen(szMessage) ,rtList.right -5 ); RECT drc; RECT rc; RECT rc2; drc = m_pTxtControls[2]->GetSizeRect(); SetRect(&rc, drc.left - 20, drc.top, drc.right, drc.bottom); this->GetDrawBase()->x_pManagerTextOut->StartToUseFont(StrToWzID("m216")); for (size_t i=0; i(vstr[i].c_str()); if (pStr) { this->GetDrawBase()->x_pManagerTextOut->DrawText( pStr, &rc2, WzColor_RGBA(180, 180, 180, 255), WzColor_RGBA(0,0,0,0), TP_HLEFT, ETS_OUTLINE); } } if (m_pLstControls[0]->GetState() == WZ_SHOW) { m_pLstControls[0]->OnDraw(true); } if( m_pListSuperMaster->GetState() == WZ_SHOW ) m_pListSuperMaster->OnDraw( true ); this->GetDrawBase()->x_pManagerTextOut->StartToUseFont(StrToWzID("m216")); vstr = m_vMapDesc; int iMouseX = Mouse::Instance()->GetMouseX(); int iMouseY = Mouse::Instance()->GetMouseY(); int sx, sy, ex, ey; sx = iMouseX + 25; sy = iMouseY; for (size_t i=0; i(vstr[i].c_str()); if (pStr) { this->GetDrawBase()->x_pManagerTextOut->DrawText( pStr, &rc2, WzColor_RGBA(255, 255, 255, 255), WzColor_RGBA(0,0,0,0), TP_HLEFT, ETS_OUTLINE); } } if (vstr.size()) { SetRect(&rc2, sx, sy, ex, ey); this->GetUIMan()->RenderRect(rc2, WzColor_RGBA(15,18,14,80)); } } //===================================================================================== // DESC: ÇØ´çÁö¿ª ÅøÆÁÁ¤º¸¸¦ m_vMapDesc¿¡ »ðÀÔÇÑ´Ù. //===================================================================================== void uiBattleZoneCreateEp2::refreshToolTip(POSTYPE pos) { m_vMapDesc.clear(); if(pos==eCHKMAP_EP2_MAX) return; if(m_cfgs.roomType == eCREATE_BATTLE_PVP_TYPE) return; TCHAR szText[INTERFACE_STRING_LENGTH] = {0,}; const sMAPINFO* villMapInfo; if (GENERALPARAM->IsTestUIScene()) villMapInfo = MapInfoParser::Instance()->FindMapInfo(10001); else villMapInfo = MapInfoParser::Instance()->FindMapInfo(g_pMap->GetCurrentFieldID()); if (!villMapInfo) return; DWORD from; TCHAR szModeName[INTERFACE_STRING_LENGTH] = {0,}; switch (m_cfgs.roomType) { #ifdef _CN_EXCECPT_MISSION //no operation #else case eCREATE_BATTLE_MISSION_TYPE: { // 1651 ¹Ì¼Ç ·¹º§ Á¦ÇÑ g_InterfaceManager.GetInterfaceString(1651, szModeName, INTERFACE_STRING_LENGTH); from = eCHKMAP_CODE_MISSION; } break; #endif//_CN_EXCECPT_MISSION case eCREATE_BATTLE_PVP_TYPE: { // 1652 PVP ·¹º§ Á¦ÇÑ g_InterfaceManager.GetInterfaceString(1652, szModeName, INTERFACE_STRING_LENGTH); from = eCHKMAP_CODE_PVP; } break; #ifndef _EXCECPT_HUNTING_001011 case eCREATE_BATTLE_CHUNTING: { // 1653 ÇåÆÃ ·¹º§ Á¦ÇÑ g_InterfaceManager.GetInterfaceString(1653, szModeName, INTERFACE_STRING_LENGTH); from = eCHKMAP_CODE_CHUNTING; } break; #endif } int groupCode = 2 + (pos + from); // EP2´Â ±×·ìÀÌ 9ºÎÅÍ ½ÃÀÛ +2 (7+2) MapGroup* pMapGroup = MapInfoParser::Instance()->GetMapGroup(groupCode); if (!pMapGroup) return; CODETYPE mapcode = -1; for(int nCnt=0;nCnt<4;++nCnt) //¸ÞÀι̼ÇÀÌ ¾Æ´Ò¶§ ¼­ºêÁ¤º¸¸¦ ÂüÁ¶ÇÑ´Ù. { if(pMapGroup->GetMapInfoIndex(nCnt)) { mapcode = pMapGroup->GetMapInfoIndex(nCnt)->MapCode; break; } } if(mapcode==-1) return; const sMAPINFO* goMapInfo = MapInfoParser::Instance()->FindMapInfo( static_cast(mapcode)); if (!goMapInfo) return; if (!checkValidMap(villMapInfo->MapCode, goMapInfo->MapCode)) { return; } this->GetUIMan()->GetInterfaceString(goMapInfo->dwANCode, szText, INTERFACE_STRING_LENGTH ); this->m_vMapDesc.push_back(szText); this->m_vMapDesc.push_back(_T("")); // °ø¹é Ãß°¡ #ifdef _JAPAN Snprintf (szText, INTERFACE_STRING_LENGTH-1, _T("%s: %d - %d"), szModeName, goMapInfo->minLV, goMapInfo->maxLV); #else Snprintf (szText, INTERFACE_STRING_LENGTH-1, _T("%s: %d ~ %d"), szModeName, goMapInfo->minLV, goMapInfo->maxLV); #endif this->m_vMapDesc.push_back(szText); #ifndef _EXCECPT_HUNTING_001011 if (g_pHero && m_cfgs.roomType == eCREATE_BATTLE_CHUNTING) { LEVELTYPE baseLevel = g_pHero->GetLevel(); short destLevel; short destMinLV; short destMaxLV; destLevel = baseLevel - HUNTING_JOIN_LEVEL_OFFSET; if (goMapInfo->minLV < destLevel) destMinLV = destLevel; else destMinLV = goMapInfo->minLV; destLevel = baseLevel + HUNTING_JOIN_LEVEL_OFFSET; if (goMapInfo->maxLV > destLevel) destMaxLV = destLevel; else destMaxLV = goMapInfo->maxLV; // 1654 ÇöÀç ÀÚ½ÅÀÇ ·¹º§¿¡ µû¸¥ ¼±Åð¡´É ·¹º§¹üÀ§: %d ~ %d TCHAR szTemp[INTERFACE_STRING_LENGTH] = {0,}; g_InterfaceManager.GetInterfaceString(1654, szTemp, INTERFACE_STRING_LENGTH); Snprintf (szText, INTERFACE_STRING_LENGTH-1, szTemp, destMinLV, destMaxLV); this->m_vMapDesc.push_back(szText); this->m_vMapDesc.push_back(_T("")); // °ø¹é Ãß°¡ } else #endif { this->m_vMapDesc.push_back(_T("")); // °ø¹é Ãß°¡ } this->GetUIMan()->GetInterfaceString(goMapInfo->dwDCode, szText, INTERFACE_STRING_LENGTH ); util::_tstring strMapDesc = szText; const TCHAR* cstrMapDesc; util::_tstring tempstrMapDescSpatial; std::vector strMapDescSpatial; cstrMapDesc = strMapDesc.c_str(); tempstrMapDescSpatial.clear(); for (size_t strIter = 0; strIterm_vMapDesc.push_back(strMapDescSpatial[i]); } else { this->m_vMapDesc.push_back(strMapDesc); } } //------------------------------------------------------------------------------ /** */ void uiBattleZoneCreateEp2::setDefaultRoomName(int iSelect/* = -1*/) { int iStartString = 0; int iRoomType = 0; if(iSelect < 0) { iRoomType = m_cfgs.roomType; } else { iRoomType = iSelect; } switch (iRoomType) { #ifdef _CN_EXCECPT_MISSION //no operation #else case eCREATE_BATTLE_MISSION_TYPE: { iStartString = c_iDefaultRoomNameStartIndex_Mission; } break; #endif//_CN_EXCECPT_MISSION #ifndef _EXCECPT_HUNTING_001011 case eCREATE_BATTLE_CHUNTING: { iStartString = c_iDefaultRoomNameStartIndex_CHunting; } break; #endif case eCREATE_BATTLE_PVP_TYPE: { iStartString = c_iDefaultRoomNameStartIndex_PVP; } break; default: return; // ±× ¿Ü¿¡´Â ±×³É ¸®ÅÏ } TCHAR szRoomName[INTERFACE_STRING_LENGTH] = {0,}; int iCnt = 0; for(int i=iStartString; i<(iStartString+c_iDefaultRoomNameNumMax); ++i) { if(g_InterfaceManager.GetInterfaceStringWithCheck(i,szRoomName,INTERFACE_STRING_LENGTH)) { ++iCnt; } } if(iCnt) { int iIndex = clock_function::GetTickCount() % iCnt; g_InterfaceManager.GetInterfaceString(iStartString+iIndex, szRoomName, INTERFACE_STRING_LENGTH); GlobalFunc::SetText(m_pEdtControls[EDT_TITLE], szRoomName); } } void uiBattleZoneCreateEp2::SetDefaultSuperMasterList() { m_pListSuperMaster->DeleteItemAll(); m_pListSuperMaster->SetSellHeight(24); #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP static int iItemData[6] = { eROOM_SPECIAL_PCBANG_SUPER_ROOM,eROOM_SPECIAL_ITEM1_SUPER_ROOM ,eROOM_SPECIAL_NORMAL , eROOM_SPECIAL_PCBANG_SUPER_ROOM_GUILD_PVP ,eROOM_SPECIAL_ITEM1_SUPER_ROOM_GUILD_PVP ,eROOM_SPECIAL_GUILD_PVP }; #else static int iItemData[3] = { eROOM_SPECIAL_PCBANG_SUPER_ROOM,eROOM_SPECIAL_ITEM1_SUPER_ROOM ,eROOM_SPECIAL_NORMAL}; #endif TCHAR szMessage[INTERFACE_STRING_LENGTH] = { 0,}; int index = 0; #ifndef __CHINA_PCBANG_SUPER_ROOM_BLOCK if( g_pHero->GetPCBangMode() ) { index = m_pListSuperMaster->InsertItemBack(); m_pListSuperMaster->SetItemData(index, &iItemData[0] ); //155303 °¡¸Í PC¹æ g_InterfaceManager.GetInterfaceString(155303 , szMessage ,INTERFACE_STRING_LENGTH ); GlobalFunc::SetItem( m_pListSuperMaster , index , szMessage , StrToWzID("mn12") ,DT_CENTER | DT_BOTTOM , c_InterfaceBKColor , c_InterfaceTextColor , c_InterfaceSelColor); } #endif POSTYPE OutPos; if ( ItemManager::Instance()->FindActiveChargeItem( eITEMTYPE_SUPERMASTER, OutPos ) ) { index = m_pListSuperMaster->InsertItemBack(); m_pListSuperMaster->SetItemData(index, &iItemData[1] ); // 155302 ¸íÁöÈÖ°üÀÇ ÁöÈÖºÀ g_InterfaceManager.GetInterfaceString(155302 , szMessage ,INTERFACE_STRING_LENGTH); GlobalFunc::SetItem( m_pListSuperMaster , index , szMessage , StrToWzID("mn12") ,DT_CENTER | DT_BOTTOM , c_InterfaceBKColor , c_InterfaceTextColor , c_InterfaceSelColor); } index = m_pListSuperMaster->InsertItemBack(); m_pListSuperMaster->SetItemData(index, &iItemData[2] ); //155301 ±âº» ¹æ g_InterfaceManager.GetInterfaceString(155301 , szMessage , INTERFACE_STRING_LENGTH ); GlobalFunc::SetItem( m_pListSuperMaster , index , szMessage , StrToWzID("mn12") ,DT_CENTER | DT_BOTTOM , c_InterfaceBKColor , c_InterfaceTextColor , c_InterfaceSelColor); #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP #ifndef _EXCECPT_HUNTING_001011 if( m_cfgs.roomType == eCREATE_BATTLE_CHUNTING ) { BOOL foundGuildPVPItem = ItemManager::Instance()->FindFirstItem(eITEMTYPE_GUILD_PVP_ENTRANCE, OutPos ); if( foundGuildPVPItem ) { if( g_pHero->GetPCBangMode() ) { index = m_pListSuperMaster->InsertItemBack(); m_pListSuperMaster->SetItemData(index, &iItemData[3] ); // 717 PC¹æ ±æµå PVP g_InterfaceManager.GetInterfaceString(eST_PCBANG_GUILD_PVP , szMessage ,INTERFACE_STRING_LENGTH); GlobalFunc::SetItem( m_pListSuperMaster, index, szMessage, StrToWzID("mn12") ,DT_CENTER | DT_BOTTOM , c_InterfaceBKColor , c_InterfaceTextColor , c_InterfaceSelColor); } if ( ItemManager::Instance()->FindActiveChargeItem( eITEMTYPE_SUPERMASTER, OutPos ) ) { index = m_pListSuperMaster->InsertItemBack(); m_pListSuperMaster->SetItemData(index, &iItemData[4] ); // 718 ÁöÈÖºÀ ±æµåPVP g_InterfaceManager.GetInterfaceString(eST_ITEM_GUILD_PVP , szMessage , INTERFACE_STRING_LENGTH); GlobalFunc::SetItem( m_pListSuperMaster, index, szMessage , StrToWzID("mn12") ,DT_CENTER | DT_BOTTOM , c_InterfaceBKColor , c_InterfaceTextColor , c_InterfaceSelColor); } index = m_pListSuperMaster->InsertItemBack(); m_pListSuperMaster->SetItemData(index, &iItemData[5] ); // 716 ±æµå PVP g_InterfaceManager.GetInterfaceString(eST_GUILD_PVP, szMessage ,INTERFACE_STRING_LENGTH); GlobalFunc::SetItem( m_pListSuperMaster, index, szMessage, StrToWzID("mn12") , DT_CENTER | DT_BOTTOM , c_InterfaceBKColor , c_InterfaceTextColor , c_InterfaceSelColor); } } #endif #endif SetTextCurrentSuperMasterType(0); } void uiBattleZoneCreateEp2::SetTextCurrentSuperMasterType(int curSel) { int * pcurType = (int *) m_pListSuperMaster->GetItemData(curSel); TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,}; switch (*pcurType ) { #ifndef __CHINA_PCBANG_SUPER_ROOM_BLOCK case eROOM_SPECIAL_PCBANG_SUPER_ROOM: { //155303 °¡¸Í PC¹æ g_InterfaceManager.GetInterfaceString(155303 , szMessage ,INTERFACE_STRING_LENGTH ); } break; #endif case eROOM_SPECIAL_ITEM1_SUPER_ROOM: { // 155302 ¸íÁöÈÖ°üÀÇ ÁöÈÖºÀ g_InterfaceManager.GetInterfaceString(155302 , szMessage ,INTERFACE_STRING_LENGTH); } break; #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP case eROOM_SPECIAL_GUILD_PVP: { // 716 ±æµå PVP g_InterfaceManager.GetInterfaceString(eST_GUILD_PVP, szMessage ,INTERFACE_STRING_LENGTH); } break; case eROOM_SPECIAL_PCBANG_SUPER_ROOM_GUILD_PVP: { // 717 PC¹æ ±æµå PVP g_InterfaceManager.GetInterfaceString(eST_PCBANG_GUILD_PVP , szMessage ,INTERFACE_STRING_LENGTH); } break; case eROOM_SPECIAL_ITEM1_SUPER_ROOM_GUILD_PVP: { // 718 ÁöÈÖºÀ ±æµåPVP g_InterfaceManager.GetInterfaceString(eST_ITEM_GUILD_PVP , szMessage , INTERFACE_STRING_LENGTH); } break; #endif default: { //155301 ±âº» ¹æ g_InterfaceManager.GetInterfaceString(155301 , szMessage , INTERFACE_STRING_LENGTH ); } break; } GetManager()->SetRoomSpecialType(*pcurType ); GlobalFunc::SetCaption( m_pTextSuperMaster , szMessage); } #pragma warning ( pop )