#include "stdafx.h" #include #include #include "CInput.h" //길드명출력하는 부분에서 이용함 -N4- #include #include "KUIListControl.h" #include "KUIControlStatic.h" #include "KUIControlScroll.h" #include "KUITabControl.h" #include "KUIControlButton.h" #include "SGameManager.h" #include "SGameMessage.h" //#include "SGameMessageUI.h" #include "SMessengerMgr.h" #include "SGameInterface.h" #include "SPlayerInfoMgr.h" #include "SStringDB.h" #include "SJobDB.h" #include "SUIMemoViewWnd.h" #include "SUIGuildMemberTab.h" // 길드원. #include "SUIGuildApplicantTab.h" // 길드신청자 #include "SUIGuildWnd.h" #define UI_REFRESH_OK 9998 // UI갱신. namespace { const char * g_pTextDecoration = ""; const char * g_pTabButtonAni_Normal = "common_button_tab_beamblue_cyan"; const char * g_pTabButtonAni_Red = "common_button_tab_beamblue_red"; const char g_arrLineAni[][128] = { "common_guage_titanium_member_high", "common_guage_titanium_member_middle", "common_guage_titanium_member_low" }; // Sub Wnd SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE g_ArrSubWnd[] = { SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO, SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MASTER }; // 탭 Wnd 타입. enum GUILDTAB_TYPE { GUILDTAB_NONE = -1, GUILDTAB_MEMBER = 0, GUILDTAB_APPLICANT, GUILDTAB_MAX }; // bintitle 2010.04.09 // 해당 컨트롤의 영역만큼 문자열을 자르고, 마지막 문자는 '..' 으로 변환하여 반환한다. void CuttingText( KUIControl * pControl, std::string& rText, const char * strFont, int fontSize ) { std::vector lineList; #ifdef _COUNTRY_ME_ pControl->SplitLine(lineList, rText, KFontManager::KDEFAULT_FONT_NAME, fontSize ); #else pControl->SplitLine(lineList, rText, strFont, fontSize, std::string("font_02") == strFont ? true : false, fontSize > 0 ? true : false ); #endif if( lineList.size() > 1 ) { std::wstring wstr = nsl::uni::conv(lineList[0].c_str()); #ifdef _COUNTRY_ME_ wstr.erase( wstr.begin() ); wstr.erase( wstr.begin() ); std::wstring comma = nsl::uni::conv(".."); wstr = comma + wstr; #else wstr.erase(wstr.end()-1); wstr.erase(wstr.end()-1); wstr += L".."; #endif std::string str = nsl::uni::conv(wstr.c_str()); rText = str; } lineList.clear(); } //-------------------------------------------------- // 권한처리 함수포인터 배열. typedef void (SUIGuildWnd::*fpAuthority)(); fpAuthority g_arrFpAuthority[ MAX_AUTHORITY_CLASS ] = { &SUIGuildWnd::Class_1, &SUIGuildWnd::Class_2, &SUIGuildWnd::Class_3, &SUIGuildWnd::Class_4, &SUIGuildWnd::Class_5, &SUIGuildWnd::Class_6, &SUIGuildWnd::Class_7}; } void SUIGuildWnd::Class_1() { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE::UIWINDOW_GUILD_SUB_MASTER, false ) ); // 길드마스터 창 닫기. DisableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. // m_pTabControl->SetDisableTab( GUILDTAB_TYPE::GUILDTAB_APPLICANT ); // 길드신청자 탭. m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_APPLICANT ]->Disable(); } void SUIGuildWnd::Class_2() { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE::UIWINDOW_GUILD_SUB_MASTER, false ) ); // 길드마스터 창 닫기. DisableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. } void SUIGuildWnd::Class_3() { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE::UIWINDOW_GUILD_SUB_MASTER, false ) ); // 길드마스터 창 닫기. DisableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. } void SUIGuildWnd::Class_4() { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE::UIWINDOW_GUILD_SUB_MASTER, false ) ); // 길드마스터 창 닫기. DisableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. } void SUIGuildWnd::Class_5() { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE::UIWINDOW_GUILD_SUB_MASTER, false ) ); // 길드마스터 창 닫기. DisableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. } void SUIGuildWnd::Class_6() // 부길마. { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE::UIWINDOW_GUILD_SUB_MASTER, false ) ); // 길드마스터 창 닫기. DisableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. } void SUIGuildWnd::Class_7(){} // 마스터. //-------------------------------------------------- SUIGuildWnd::SUIGuildWnd( SGameManager * pGameManager ) : SUIWnd( pGameManager ), m_BaseControl( NULL ), m_pMemoControl( NULL ), //m_pTabControl( NULL ), m_pBtnCtrlMaster( NULL ), m_pNoticePictogram( NULL ), m_pControlGuildName( NULL ), m_pControlCurrent( NULL ), m_pControlGrade( NULL ), m_pControlConnect( NULL ), m_pControlJob( NULL ), m_pControlLv( NULL ), m_pControlID( NULL ), m_nSrcHeightLocal( 0 ), m_bExtendLocal( 0 ), m_bMemoText( false ), m_bFirstOpen( true ), m_bGuild( false ), m_bManageMode( false ), m_bMasterMode( false ), m_bUIRefresh( true ), m_beforeAuthority( -1 ), m_bRefresh( GUILD_UPDATE::GUILD_UPDATE_NONE ) { } SUIGuildWnd::~SUIGuildWnd() { Release(); } void SUIGuildWnd::Release() { } SUIWnd* SUIGuildWnd::CreateWnd( const char* szFile, KUIWndManager* pWndManager, KPoint kPos, int nWindowID ) { // 커스텀 윈도우 move 영역 설정 SetCustomMovingRect( KRect( 2, 2, 250, 22 ) ); SUIWnd::CreateWnd( szFile, pWndManager, kPos, nWindowID ); //-------------------------------- // 탭 컨트롤 생성. // 길드원. SUIWnd * pTapMember = new SUIGuildMemberTab( m_pGameManager ); pTapMember->SetUseCutCaption(); // 컨트롤의 Caption 텍스트 자르기. pTapMember->CreateWnd( "window_guild_main_member_list.nui", pWndManager, KPoint( kPos.x, kPos.y ) ); pTapMember->SetParent( this ); /// 2011.04.01 right click tool tip - prodongi // 2011.11.29 - servantes : 옵션 nui에 해당 컨트롤 없음 / 주석처리 //KUIControl* rmark = dynamicCast(pTapMember->GetChild("mark_right_click_01")); //if (rmark) //{ // std::string str; // XStringUtil::Format(str, "<#b92c36>%s", S(6776)); /// 2011.05.24 칼라 적용 - prodongi // rmark->SetTooltip(str.c_str()); //} // 길드신청자. SUIWnd * pTabApplicant = new SUIGuildApplicantTab( m_pGameManager ); pTabApplicant->SetUseCutCaption(); // 컨트롤의 Caption 텍스트 자르기. pTabApplicant->CreateWnd( "window_guild_main_applicant_list.nui", pWndManager, KPoint( kPos.x, kPos.y ) ); pTabApplicant->SetParent( this ); // 부모에 자식으로 등록. this->AddChild( pTapMember ); m_ArrTabWnd.push_back( pTapMember ); this->AddChild( pTabApplicant ); m_ArrTabWnd.push_back( pTabApplicant ); //// 최초엔 길드원 탭을 보여줌. // 주석. bintitle. 2010.11.30. //pTapMember->SetShow( true ); // 위치설정 KRect rtTab = GetChild( "listcontrol01" )->GetRect(); // 탭 컨트롤 위치지정을 위한 컨트롤. pTapMember->MovePos( rtTab.left, rtTab.top ); pTabApplicant->MovePos( rtTab.left, rtTab.top ); //// //// 탭 컨트롤 설정. //m_pTabControl = static_cast< KUISimpleTabControl * >( GetChild( "tab00" ) ); //if( m_pTabControl ) //{ // m_pTabControl->SetTabProperty( 0, false, 2 ); // /*m_pTabControl->AddTabItem( "길드원", "길드원", "common_button_titanium_line_nomal" ); // m_pTabControl->AddTabItem( "길드신청자", "길드신청자", "common_button_titanium_line_nomal" );*/ // m_pTabControl->AddTabItem( "길드원", "길드원", 0, 1.0f, "<#a0a0a0>" ); // m_pTabControl->AddTabItem( "길드신청자", "길드신청자", 0, 1.0f, "<#a0a0a0>" ); // m_pTabControl->SetSelectedItem( 0 ); // ShowTabWnd( GUILDTAB_TYPE::GUILDTAB_MEMBER ); //} ////m_pTabControl->SetTabItemAniName( GUILDTAB_TYPE::GUILDTAB_MEMBER, "common_button_tab_beamblue_red" ); // // 탭 버튼. 탭컨트롤 기능을 대신한다. m_arrTabButton.push_back( dynamicCast< KUIControlButton * >( GetChild( "tab00" ) ) ); m_arrTabButton.push_back( dynamicCast< KUIControlButton * >( GetChild( "tab01" ) ) ); int size = m_arrTabButton.size(); for( int i=0; iSetEnableColor( "<#ffffff>" ); m_arrTabButton[ i ]->SetDisableColor( "<#a0a0a0>" ); } // 이부분 때문에 탭컨트롤 대신 버튼을 사용했다. // 활성화된 탭의 레이아웃을 탭에 속한 Wnd 보다 높게하여 ------ // _____| |_______ // 이런 모양이 되도록 해야하지만, // 탭컨트롤은 탭컨트롤안에 버튼기능의 TabItem 이 포함된다. // 탭컨트롤의 레이아웃이 탭에속한 Wnd 보다 낮은 상태에서 TabItem의 레이아웃은 탭에속한 Wnd 보다 높게 할 수 없다. std::list & rChildList = const_cast< std::list & >( this->GetChildList() ); std::list< KUIWnd* >::iterator it = std::find( rChildList.begin(), rChildList.end(), m_arrTabButton[ 0 ] ); if( it != rChildList.end() ) { rChildList.erase( it ); rChildList.push_back( m_arrTabButton[ 0 ] ); } //----------------------------- // Sub Wnd m_nShowSubWnd = GUILDWND_TYPE::GUILDWND_NONE; m_ArrSubWndID.push_back( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO ); // 길드정보 m_ArrSubWndID.push_back( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE ); // 길드관리 m_ArrSubWndID.push_back( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MASTER ); // 길드마스터 // // 자신의 길드정보 컨트롤 배열. m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "mark_online_01" ) ) ); // 0 m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "mark_job_01" ) ) ); // 1 m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "text_Lv_01" ) ) ); // 2 m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "text_id_01" ) ) ); // 3 m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "button_fold_01" ) ) ); // 4 m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "mark_guild_class_01" ) ) ); // 5 m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "text_guild_class_01" ) ) ); // 6 m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "mark_guild_memo_01" ) ) ); // 7 m_ArrOwnGuildStateControl.push_back( dynamicCast< KUIControl * >( GetChild( "guild_memo_text_01" ) ) ); // 8 // 위 컨트롤들의 Base Control. m_BaseControl = dynamicCast< KUIControl * >( GetChild( "backline_03" ) ); m_nSrcHeightLocal = m_BaseControl->GetRect().GetHeight(); // 원본 높이. // 길드정보 컨트롤의 보임, 숨김처리. SetShowGuildState(); // 내길드정보 - 확장버튼 초기 이미지변경. dynamicCast< KUIControlSimpleButton * >( m_ArrOwnGuildStateControl[ 4 ] )->SetAniName( "common_button_titanium_unfold" ); ////// 길드메모 텍스트 컨트롤. m_pMemoControl = GetChild( "backline_02" ); // "guild_notice_text_02" ); //"guild_notice_text_02" ); m_pBtnCtrlMaster = dynamicCast< KUIControlSimpleButton * >( GetChild( "button_guild_master_01" ) ); // 길드마스터 버튼. //m_pBtnCtrlMaster = GetChild( "button_guild_master_01" ) ; // 길드마스터 버튼. // // Controls // // m_pNoticePictogram = dynamicCast< KUIControlStatic * >( GetChild( "mark_guild_notice_01" ) ); // 메모픽토그램. m_pControlGuildName = dynamicCast< KUIControl * >( GetChild( "guild_name_text_01" ) ); // 길드명. m_pControlNotice = dynamicCast< KUIControl * >( GetChild( "guild_notice_text_02" ) ) ; // 길드공지. m_pControlCurrent = dynamicCast< KUIControl * >( GetChild( "text_current" ) ); m_pControlGrade = dynamicCast< KUIControl * >( GetChild( "text_grade" ) ); m_pControlConnect = dynamicCast< KUIControlStatic * >( GetChild( "mark_online_01" ) ) ; // 접속 m_pControlJob = dynamicCast< KUIControlStatic * >( GetChild( "mark_job_01" ) ) ; ; // 직업 m_pControlLv = dynamicCast< KUIControl * >( GetChild( "text_Lv_01" ) ) ; ; // Level m_pControlID = dynamicCast< KUIControl * >( GetChild( "text_id_01" ) ) ; ; // 아이디 //----------------------------- // 2010.11.26. 길드정보 변경시 UI 갱신방식 => 길드윈도우 open 시 UI 갱신 으로 변경. m_bUIRefresh = true; // 길드윈도우 open 시에 UI를 갱신할지 여부. m_beforeGuildMemberCount = -1; // 갱신 이전 길드원수. //----------------------------- return this; } bool SUIGuildWnd::InitControls( KPoint kPos ) { return SUIWnd::InitControls( kPos ); } void SUIGuildWnd::OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd) { if( bOpen ) { // bintitle. 2010.11.30. // 하나의 탭도 보이지 않는 상태이면 길드맴버탭 을 보이게 한다. bool bTabOpen = false; for( int i=0; iIsShow() ) { bTabOpen = true; break; } } if( !bTabOpen ) m_ArrTabWnd[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->SetShow( true ); // 길드UI 갱신. if( m_bUIRefresh ) { // 길드마스터 정보 컨트롤 변경. UpdateMaster( m_bRefresh ); m_bUIRefresh = false; // 갱신여부 클리어. m_bRefresh = GUILD_UPDATE::GUILD_UPDATE_NONE; // 갱신조건 클리어. } // 길드마스터 정보 컨트롤 설정. //UpdateMaster(); } else { // 길드공지 닫기. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, false ) ); // 나의메모 닫기. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, false ) ); // 메모뷰어 닫기. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, false) ); // 모든 길드 Sub Wnd 숨김. CloseAllSubWnd(); // 2010.12.07. Tab 윈도우들 숨김. for( int i=0; iSetShow( false ); m_bUIRefresh = false; // 갱신여부 클리어. m_bRefresh = GUILD_UPDATE::GUILD_UPDATE_NONE; // 갱신조건 클리어. } } void SUIGuildWnd::ProcMsgAtStatic( SGameMessage* pMsg ) { switch(pMsg->nType) { // 조건 검사 위치 변경 및 else 추가. bintitle. 2010.11.26. case IMSG_UI_SEND_DATA: { SIMSG_UI_SEND_DATA *pData = (SIMSG_UI_SEND_DATA *)pMsg; // // 길드 업데이트. if( pData->m_strString == "guild_update" ) { pData->bUse = true; //// 길드없음. ////if( m_GuildMgr.GetGuildMemberCount() < 1 ) //if( !m_GuildMgr.IsExist() ) //{ // m_bRefresh = UI_REFRESH_OK; // UI갱신. // // // 열려있고, 이전에 길드존재였으나 현재 길드가없는상태( 해체, 탈퇴, 강퇴 등의경우 ). // if( this->IsShow() && m_bBeforeExist ) // { // m_bBeforeExist = false; // UpdateMaster( GUILD_UPDATE::GUILD_UPDATE_MAX ); // } // // 모든 길드 Sub Wnd 숨김. // CloseAllSubWnd(); // //m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MAINWND, false ) ); 2010.12.07. 주석. // m_bUIRefresh = true; // UI갱신. //} // 길드없음. if( !m_GuildMgr.IsExist() ) { UpdateMaster( GUILD_UPDATE::GUILD_UPDATE_MAX ); } // 길드있음. else if( !(pData->m_dwData & GUILD_UPDATE::GUILD_UPDATE_NONE) ) // 길드정보관련 메세지 아닌경우 제외. bintitle. 2010.11.26. { if( this->IsShow() ) { // 길드마스터 정보 컨트롤 변경. UpdateMaster( pData->m_dwData ); m_bUIRefresh = false; // UI갱신X. m_bRefresh = GUILD_UPDATE::GUILD_UPDATE_NONE; // 갱신조건 클리어. } else { m_bUIRefresh = true; // 갱신. m_bRefresh |= pData->m_dwData; // UI open 시에 비교하기위해 갱신조건 누적. } // SUB WND 에 메세지 전송. m_pGameManager->ProcMsgAtStatic( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO, "guild_update", pData->m_dwData ) ); m_pGameManager->ProcMsgAtStatic( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, "guild_update", pData->m_dwData ) ); m_pGameManager->ProcMsgAtStatic( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MASTER, "guild_update", pData->m_dwData ) ); //m_ArrTabWnd[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->ProcMsgAtStatic( pMsg ); // 메세지 전달. 2010.12.07. bintitle. } m_ArrTabWnd[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->ProcMsgAtStatic( pMsg ); // 메세지 전달. 2010.12.07. bintitle. } // // 길드아이콘 업데이트. else if( pData->m_dwData == IMSG_GUILD_ICON || pData->m_dwData == IMSG_GUILD_ICON_REFRESH ) { pMsg->bUse = true; if( this->m_GuildMgr.GetGuildID() == (int)pData->m_nNumber.getAmount() ) { if( pData->m_strText == "" || pData->m_strText.size() < 1 ) dynamicCast< KUIControlStatic * >( GetChild( "guild_mark" ) )->SetAniName( "common_mark_icon_none" ); else dynamicCast< KUIControlStatic * >( GetChild( "guild_mark" ) )->SetAniName( pData->m_strText.c_str() ); } } // // 길드장 변경. else if( pData->m_strString == "change_guild_master" ) { pData->bUse = true; m_pGameManager->ProcMsgAtStatic( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, "change_guild_master" ) ); m_pGameManager->ProcMsgAtStatic( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MASTER, "change_guild_master" ) ); // 권한처리. AuthorityProcess(); } } break; case IMSG_UI_GUILD_MASTER_MODE : // 길드마스터 모드 설정. { m_ArrTabWnd[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->ProcMsgAtStatic( pMsg ); // 메세지 전달. SIMSG_UI_GUILD_WNDMSG * pData = dynamicCast< SIMSG_UI_GUILD_WNDMSG * >( pMsg ); m_bMasterMode = pData->bMode; m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->SetAniName( m_bMasterMode ? g_pTabButtonAni_Red : g_pTabButtonAni_Normal ); } break; case IMSG_UI_GUILD_MANAGE_MODE : // 길드원 관리모드 설정. { m_ArrTabWnd[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->ProcMsgAtStatic( pMsg ); // 메세지 전달. SIMSG_UI_GUILD_WNDMSG * pData = dynamicCast< SIMSG_UI_GUILD_WNDMSG * >( pMsg ); m_bManageMode = pData->bMode; // 관리모드적용. ManageMode(); } break; // 길드관리 윈도우 -> 길드원 신청관리. case IMSG_UI_GUILD_APPLICANTTAB : ShowTabWnd( GUILDTAB_TYPE::GUILDTAB_APPLICANT ); // 길드신청자 탭 을 보임. //m_pTabControl->SetSelectedItem( GUILDTAB_TYPE::GUILDTAB_APPLICANT ); // 탭 컨트롤 셀렉트 변경. /// 2011.09.30 두번 호출 되어서 주석 처리함 - prodongi //ShowTabWnd( GUILDTAB_TYPE::GUILDTAB_APPLICANT ); pMsg->bUse = true; break; case IMSG_UI_GUILD_MEMBERTAB : ShowTabWnd( GUILDTAB_TYPE::GUILDTAB_MEMBER ); // 길드원 탭 을 보임. // m_pTabControl->SetSelectedItem( GUILDTAB_TYPE::GUILDTAB_MEMBER ); // 탭 컨트롤 셀렉트 변경. /// 2011.09.30 두번 호출 되어서 주석 처리함 - prodongi //ShowTabWnd( GUILDTAB_TYPE::GUILDTAB_MEMBER ); pMsg->bUse = true; break; case IMSG_UI_GUILD_MEMBERCLASS_SETUP : { // Open 길드관리 창. OpenSubWnd( GUILDWND_TYPE::GUILDWND_MANAGE ); m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_GUILD_WNDMSG( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, IMSG_UI_GUILD_MEMBERCLASS_SETUP ) ); pMsg->bUse = true; } break; case IMSG_UI_GUILD_EXPULSION_SETUP : // Open 길드관리 창. OpenSubWnd( GUILDWND_TYPE::GUILDWND_MANAGE ); m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_GUILD_WNDMSG( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, IMSG_UI_GUILD_EXPULSION_SETUP ) ); pMsg->bUse = true; break; case IMSG_UI_GUILD_DONATE_MODE: // Open 길드관리 창. OpenSubWnd( GUILDWND_TYPE::GUILDWND_MANAGE ); m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_GUILD_WNDMSG( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, IMSG_UI_GUILD_DONATE_MODE ) ); pMsg->bUse = true; break; // 길드아이콘. case IMSG_GUILD_ICON : case IMSG_GUILD_ICON_REFRESH : { SIMSG_UI_GUILD_WNDMSG *pData = (SIMSG_UI_GUILD_WNDMSG *)pMsg; if( pData->strData == m_GuildMgr.GetGuildName() ) { if( pData->strData_2 == "" || pData->strData_2.size() < 1 ) dynamicCast< KUIControlStatic * >( GetChild( "guild_mark" ) )->SetAniName( "common_mark_icon_none" ); else { dynamicCast< KUIControlStatic * >( GetChild( "guild_mark" ) )->SetAniName( pData->strData_2.c_str() ); } } pMsg->bUse = true; } break; case IMSG_GUILD_ICON_DESTROY : { SIMSG_UI_GUILD_WNDMSG *pData = (SIMSG_UI_GUILD_WNDMSG *)pMsg; if( pData->nData == m_GuildMgr.GetGuildID() ) { dynamicCast< KUIControlStatic * >( GetChild( "guild_mark" ) )->SetAniName( "common_mark_icon_none" ); } pMsg->bUse = true; } break; case IMSG_GUILD_ICON_LEAVE : { SIMSG_UI_GUILD_WNDMSG *pData = (SIMSG_UI_GUILD_WNDMSG *)pMsg; dynamicCast< KUIControlStatic * >( GetChild( "guild_mark" ) )->SetAniName( "common_mark_icon_none" ); pMsg->bUse = true; } break; } } void SUIGuildWnd::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ) { switch( nMessage ) { case KUI_MESSAGE::KBUTTON_CLICK : { // close. if( !::_stricmp( lpszControlID, "button_close" ) ) { // 모든 길드 Sub Wnd 숨김. CloseAllSubWnd(); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MAINWND, false ) ); } // Open 길드정보 창. else if( !::_stricmp( lpszControlID, "button_guild_data_01" ) ) ShowSubWnd( GUILDWND_TYPE::GUILDWND_INFO ); // Open 길드관리 창. else if( !::_stricmp( lpszControlID, "button_guild_manage_01" ) ) ShowSubWnd( GUILDWND_TYPE::GUILDWND_MANAGE ); // Open 길드마스터 창. else if( !::_stricmp( lpszControlID, "button_guild_master_01" ) ) ShowSubWnd( GUILDWND_TYPE::GUILDWND_MASTER ); // 자신의 길드정보 확장버튼. else if( !::_stricmp( lpszControlID, "button_fold_01" ) ) { ExtendOwnState(); } // 탭 버튼( 길드원 ). if( !::_stricmp( lpszControlID, "tab00" ) ) { /// 2011.09.30 Process로 뺌, 뻑이 날 가능성이 있음 - prodongi m_selectedTempTabIdx = GUILDTAB_TYPE::GUILDTAB_MEMBER; //ShowTabWnd( GUILDTAB_TYPE::GUILDTAB_MEMBER ); } // 탭 버튼( 길드신청자 ). if( !::_stricmp( lpszControlID, "tab01" ) ) { /// 2011.09.30 Process로 뺌, 뻑이 날 가능성이 있음 - prodongi m_selectedTempTabIdx = GUILDTAB_TYPE::GUILDTAB_APPLICANT; //ShowTabWnd( GUILDTAB_TYPE::GUILDTAB_APPLICANT ); } } break; // Scroll case KUI_MESSAGE::KSCROLL_SELECT : { } break; //// 탭 변경 //case KUI_MESSAGE::KTAB_SELECT : // // ShowTabWnd( (int)lparam ); // break; // 윈도우 이동 case KUI_MESSAGE::KGENWND_MOVE: { LimitMoveWnd(); // 게임 외부로 나가지 못하게 제한 if( m_nShowSubWnd > GUILDWND_TYPE::GUILDWND_NONE && m_nShowSubWnd < GUILDWND_TYPE::GUILDWND_MAX ) { // 길드서브창 이동. m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_MOVE( ( SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE )m_ArrSubWndID[ m_nShowSubWnd ], GetRect().right - 4, GetRect().top ) ); // 메모뷰어 닫기. 잔상문제때문. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, false ) ); // 팝업 Wnd 닫기. } } break; } SUIWnd::PumpUpMessage( lpszControlID, nMessage, lparam, wparam ); } DWORD SUIGuildWnd::OnMouseMessage(DWORD dwMessage, int x, int y) { switch( dwMessage ) { case KMOUSE_MOVE : if( m_bGuild ) { static DWORD dwTime = 0; if(GetSafeTickCount() - dwTime > 300) { // 길드메모뷰 Wnd. ShowMemoView( x, y ); dwTime = GetSafeTickCount(); } //// 길드메모뷰 Wnd. //ShowMemoView( x, y ); } break; } return SUIWnd::OnMouseMessage(dwMessage, x, y); } /// 2011.09.30 - prodongi void SUIGuildWnd::Process(DWORD dwTime) { updateSelectedTempTab(); SUIWnd::Process(dwTime); } void SUIGuildWnd::updateSelectedTempTab() { if (-1 == m_selectedTempTabIdx) return ; ShowTabWnd(m_selectedTempTabIdx); m_selectedTempTabIdx = -1; } // 길드메모뷰 Wnd. void SUIGuildWnd::ShowMemoView( int x, int y ) { bool bOpen = true; // 길드공지. if( bOpen && m_GuildMgr.GetGuildNotice() && ::_stricmp( m_GuildMgr.GetGuildNotice(), "" ) && m_pMemoControl && m_pMemoControl->GetRect().IsInRect( x, y ) ) { bOpen = false; KRect rt = m_pMemoControl->GetRect(); m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SETUP_REGION( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, "guild_ui_main_memo_01", rt.left, rt.top ) ); // 위치이동 및 크기 지정. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, true ) ); // 팝업 Wnd 열기. m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, "guild_memo", m_GuildMgr.GetGuildNotice(), 0 ) ); // 메모 데이터 전송. } // 나의메모. else if( bOpen && m_bMemoText && m_ArrOwnGuildStateControl[ 8 ] && m_ArrOwnGuildStateControl[ 8 ]->IsShow() && m_ArrOwnGuildStateControl[ 8 ]->GetRect().IsInRect( x, y ) ) { bOpen = false; KRect rt = m_BaseControl->GetRect(); rt.top += ( rt.GetHeight() / 2 ); m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SETUP_REGION( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, "guild_ui_main_memo_01", rt.left, rt.top ) ); // 위치이동 및 크기 지정. SPlayerInfo player = m_PlayerInfoMgr.GetPlayerInfo(); SPlayerSlot * pPlayerSlot = this->m_GuildMgr.FindMember( player.GetName() ); m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, "guild_memo", pPlayerSlot->GetGuildMemo().c_str(), 1 ) ); // 메모 데이터 전송. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, true ) ); // 팝업 Wnd 열기. } //// 닫기. //else //{ // m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MEMOWND, false ) ); // 닫기. //} } // 길드 Sub Wnd 보임, 숨김 처리. void SUIGuildWnd::ShowSubWnd( GUILDWND_TYPE wndType ) { m_nShowSubWnd = (int)wndType; m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( g_ArrSubWnd[ m_nShowSubWnd ] ) ); // 하나의 Sub Wnd가 띄워지면 다른창들은 숨긴다. for( int i=0; iPostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( g_ArrSubWnd[ i ], false ) ); } } // 길드 Sub Wnd Open, 이외 sub wnd 는 Close. void SUIGuildWnd::OpenSubWnd( GUILDWND_TYPE wndType ) { m_nShowSubWnd = (int)wndType; m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( g_ArrSubWnd[ m_nShowSubWnd ], true ) ); // 하나의 Sub Wnd가 띄워지면 다른창들은 숨긴다. for( int i=0; iPostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( g_ArrSubWnd[ i ], false ) ); } } // 모든 길드 Sub Wnd 숨김. void SUIGuildWnd::CloseAllSubWnd() { for( int i=0; iPostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( g_ArrSubWnd[ i ], false ) ); } // 탭 Wnd 보임, 숨김 처리. void SUIGuildWnd::ShowTabWnd( int tabWndType ) { if( tabWndType > GUILDTAB_TYPE::GUILDTAB_NONE && tabWndType < GUILDTAB_TYPE::GUILDTAB_MAX ) { // 탭에 속하는 윈도우들의 레이아웃을 최하단으로 이동. std::list & rChildList = const_cast< std::list & >( this->GetChildList() ); int size = m_ArrTabWnd.size(); for( int i=0; i::iterator it = std::find( rChildList.begin(), rChildList.end(), m_ArrTabWnd[ i ] ); if( it != rChildList.end() ) { rChildList.erase( it ); rChildList.push_back( m_ArrTabWnd[ i ] ); } } m_ArrTabWnd[ tabWndType ]->SetShow( true ); for( int i=0; i::iterator it = std::find( rChildList.begin(), rChildList.end(), m_arrTabButton[ tabWndType ] ); if( it != rChildList.end() ) { rChildList.erase( it ); rChildList.push_back( m_arrTabButton[ tabWndType ] ); } } else { m_ArrTabWnd[ i ]->SetShow( false ); } } // // 길드신청자 탭. if( tabWndType == GUILDTAB_TYPE::GUILDTAB_APPLICANT ) { // 길드관리 윈도우 오픈. //m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, true ) ); OpenSubWnd( GUILDWND_TYPE::GUILDWND_MANAGE ); // 권한. SPlayerInfo player = m_PlayerInfoMgr.GetPlayerInfo(); SPlayerSlot * pPlayerSlot = this->m_GuildMgr.FindMember( player.GetName() ); if( pPlayerSlot ) { int nBitSet = m_GuildMgr.GetAuthorityClassBitSet( pPlayerSlot->GetAuthority() - 1 ); // 권한 비트셋. //if( pPlayerSlot->GetAuthority() == 7 || ( nBitSet & _PERMIT_REQUIRED_ACTION::PRA_PERMISSION_MANAGEMENT ) ) if( pPlayerSlot->GetAuthority() == 7 ) { // 길드관리-길드원가입 패널 오픈 메세지 전송. m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_GUILD_WNDMSG( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE_PANEL_INVITATION, IMSG_UI_GUILD_APPLICANT_FOR_ADMISSION ) ); } } } } } inline void SUIGuildWnd::DisableBtnCtrl( const char * pStr ) { KUIControl * pControl = dynamicCast< KUIControl * >( GetChild( pStr ) ); if( m_bFirstOpen || !( pControl->IsDisable() ) ) pControl->Disable(); // 길드정보 버튼. } inline void SUIGuildWnd::EnableBtnCtrl( const char * pStr ) { KUIControl * pControl = dynamicCast< KUIControl * >( GetChild( pStr ) ); if( m_bFirstOpen || pControl->IsDisable() ) pControl->Enable(); // 길드정보 버튼. } // 권한처리. void SUIGuildWnd::AuthorityProcess() { int nMemberCount = m_GuildMgr.GetGuildMemberCount(); SPlayerInfo player = m_PlayerInfoMgr.GetPlayerInfo(); SPlayerSlot * pPlayerSlot = this->m_GuildMgr.FindMember( player.GetName() ); if( nMemberCount && pPlayerSlot ) { int nAuthority = pPlayerSlot->GetAuthority(); // 권한. if( nAuthority > 0 && nAuthority <= 7 ) (this->*g_arrFpAuthority[ nAuthority - 1 ])(); // 권한처리. //// 등급별권한설정 권한 추가. //if( nAuthority < _PERMISSION::PERMISSION_LEADER ) //{ // int nBitSet = m_GuildMgr.GetAuthorityClassBitSet( nAuthority - 1 ); // 권한 비트셋. // // if( _PERMIT_REQUIRED_ACTION::PRA_CLASS_AUTHORITY_SET & nBitSet ) // { // EnableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. // } //} } } // 길드마스터 정보 컨트롤 변경. void SUIGuildWnd::UpdateMaster( DWORD nRefresh ) // 갱신조건 추가. bintitle.2010.11.26. { //-------------------------------- // 길드마스터 정보 컨트롤 설정. // SPlayerInfo player = m_PlayerInfoMgr.GetPlayerInfo(); KUIWnd * pWnd = NULL; //---------------------------- // 길드가 없다. //if( m_beforeGuildMemberCount != m_GuildMgr.GetGuildMemberCount() && m_GuildMgr.GetGuildMemberCount() < 1 ) if( !m_GuildMgr.IsExist() ) { m_bGuild = false; // 길드가입여부. // 모든 길드 Sub Wnd 숨김. CloseAllSubWnd(); // KUIControl * pControl; GetChild( "guild_name_text_01" )->SetCaption( " " ); // 길드명. m_ArrOwnGuildStateControl[ 3 ]->SetCaption( " " ); // 내아이디. DisableBtnCtrl( "button_guild_data_01" ); // 길드정보 버튼. DisableBtnCtrl( "button_guild_manage_01" ); // 길드관리 버튼. DisableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. DisableBtnCtrl( "button_fold_01" ); // 확장 버튼. m_pControlNotice->SetCaption( " " ); // 길드공지. m_pControlGrade->SetCaption( " " ); m_pControlCurrent->SetCaption( " " ); dynamicCast< KUIControlStatic * >( GetChild( "mark_guild_notice_01" ) )->SetAniName( "common_mark_titanium_guild_notice_offline" ); // 메모픽토그램. dynamicCast< KUIControlStatic * >( GetChild( "mark_online_01" ) )->SetAniName( "common_mark_titanium_offline" ); // 접속아이콘. string jobName( player.GetJobName() ); dynamicCast< KUIControlStatic * >( GetChild( "mark_job_01" ) )->SetAniName( jobName.append("_off").c_str() ); // 직업아이콘. GetChild( "text_Lv_01" )->SetCaption( CStringUtil::StringFormat( "%s<#93fe00>", S(6425) ).c_str() ); // Level 컨트롤 dynamicCast< KUIControlStatic * >( GetChild( "guild_mark" ) )->SetAniName( "common_mark_icon_none" ); // 길드마크. // 등급명. // -1 하는 이유 : 등급은 1부터시작, 클래스명배열은 0부터 시작. 따라서 -1로 맞춰줌. m_ArrOwnGuildStateControl[ 6 ]->SetCaption( "" ); // 메모텍스트 m_ArrOwnGuildStateControl[ 8 ]->SetCaption( "" ); // 길드맴버 탭. //m_pTabControl->SetDisableTab( GUILDTAB_TYPE::GUILDTAB_MEMBER ); m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->Disable(); // 길드신청자 탭. //m_pTabControl->SetDisableTab( GUILDTAB_TYPE::GUILDTAB_APPLICANT ); m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_APPLICANT ]->Disable(); // 권한처리. AuthorityProcess(); // 2010.12.07. bintitle. 자신의정보 축소시킴. m_bExtendLocal = true; ExtendOwnState(); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MAINWND, false ) ); // 2010.12.07. bintitle. } //---------------------------- // 길드 존재 else { m_bGuild = true; // 길드가입여부. int nAuthority = 0; SPlayerSlot * pPlayerSlot = this->m_GuildMgr.FindMember( player.GetName() ); //----------------------------- // 플레이어가 길드맴버로 갱신되기 이전에 화면갱신이 이루어지는 경우에 길드명과 공지가 갱신이 되지않아 // 길드맴버에 나(플레이어) 가 없어도 출력하도록 위치를 이동. 2010.12.10. bintitle. // 길드명. if( ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_GINFO ) || /// 2010.12.14 or 연산 수정 - prodongi ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_CHANGE_GUILD_NAME ) ) { m_pControlGuildName->SetCaption( CStringUtil::StringFormat( "%s", m_pControlGuildName->GetFontSize(), m_GuildMgr.GetGuildName() ).c_str() ); m_pControlGuildName->CutCaptionNTooltip(); } // // 길드공지 컨트롤. if( ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_GINFO ) || /// 2010.12.14 or 연산 수정 - prodongi ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_NOTICE ) ) { std::string strNotice( m_GuildMgr.GetGuildNotice() ); m_pControlNotice->SetCaption( CStringUtil::StringFormat( "<#4d4d4d>%s", m_pControlNotice->GetFontSize(), strNotice.c_str() ).c_str() ); m_pControlNotice->CutCaptionNTooltip(); } //----------------------------- if( pPlayerSlot ) { EnableBtnCtrl( "button_guild_data_01" ); // 길드정보 버튼. EnableBtnCtrl( "button_guild_manage_01" ); // 길드관리 버튼. EnableBtnCtrl( "button_guild_master_01" ); // 길드마스터 버튼. EnableBtnCtrl( "button_fold_01" ); // 확장 버튼. //m_pTabControl->SetEnableTab( GUILDTAB_TYPE::GUILDTAB_APPLICANT ); // 길드신청자 탭. //if( m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_APPLICANT ]->IsDisable() ) // m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_APPLICANT ]->Enable(); /// 2010.12.17 길마만 버튼 활성화- prodongi if (7 != pPlayerSlot->GetAuthority()) DisableBtnCtrl("button_guild_master_01"); if( m_bFirstOpen || ::_stricmp( m_pNoticePictogram->GetAniName(), "common_mark_titanium_guild_notice" ) ) m_pNoticePictogram->SetAniName( "common_mark_titanium_guild_notice" ); // 메모픽토그램. // 길드맴버 탭. //m_pTabControl->SetEnableTab( GUILDTAB_TYPE::GUILDTAB_MEMBER ); if( m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->IsDisable() ) m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->Enable(); // 접속 컨트롤. if( m_bFirstOpen || ::_stricmp( m_pControlConnect->GetAniName(), "common_mark_titanium_online" ) ) { m_pControlConnect->SetAniName( "common_mark_titanium_online" ); } // 직업 컨트롤. m_pControlJob->SetAniName( GetJobDB().GetJobIconName( pPlayerSlot->GetJobID() ) ); // Level 컨트롤 m_pControlLv->SetCaption( CStringUtil::StringFormat( "%d", m_pControlLv->GetFontSize(), pPlayerSlot->GetLevel() ).c_str() ); // 아이디 컨트롤 std::string strCutName( player.GetName() ); //CuttingText( m_pControlID, strCutName, "font_02", m_pControlID->GetFontSize() ); m_pControlID->SetCaption( CStringUtil::StringFormat( "%s", m_pControlID->GetFontSize(), strCutName.c_str() ).c_str() ); m_pControlID->CutCaptionNTooltip(); KUIControl * pControl = NULL; // 메모텍스트 if( nRefresh & GUILD_UPDATE::GUILD_UPDATE_MEMO ) { pControl = m_ArrOwnGuildStateControl[ 8 ]; std::string strMemo = pPlayerSlot->GetGuildMemo(); if( strMemo.size() < 1 && ( strMemo == "" ) ) m_bMemoText = false; else m_bMemoText = true; //CuttingText( pControl, strMemo, "font_02", pControl->GetFontSize() ); pControl->SetCaption( CStringUtil::StringFormat( "<#4d4d4d>%s", pControl->GetFontSize(), strMemo.c_str() ).c_str() ); pControl->CutCaptionNTooltip(); } //---------------------------- // 권한 처리. nAuthority = pPlayerSlot->GetAuthority(); // 등급. pControl = m_ArrOwnGuildStateControl[ 5 ]; // 등급icon 컨트롤. if( m_beforeAuthority != nAuthority ) // 등급이 변경됐을때. bintitle.2010.11.26. { int nClass = nAuthority; if( nClass != _PERMISSION::PERMISSION_LEADER ) nClass = _PERMISSION::PERMISSION_LEADER - nClass; std::string strClassAni = CStringUtil::StringFormat( "common_mark_titanium_guild_class_0%d", nClass ); if( m_bFirstOpen || pControl->GetAniName() != strClassAni ) { dynamicCast< KUIControlStatic * >( pControl )->SetAniName( strClassAni.c_str() ); } // 등급명. // -1 하는 이유 : 등급은 1부터시작, 클래스명배열은 0부터 시작. 따라서 -1로 맞춰줌. pControl = m_ArrOwnGuildStateControl[ 6 ]; if( nAuthority == 7 ) pControl->SetCaption( CStringUtil::StringFormat("<#955c5c>%s", pControl->GetFontSize(), S(3508) ).c_str() ); else { const char * pStr = this->m_GuildMgr.GetAuthorityClassName( ( nAuthority - 1 ) ); if( pStr ) pControl->SetCaption( CStringUtil::StringFormat( "<#955c5c>%s", pControl->GetFontSize(), pStr ).c_str() ); } pControl->CutCaptionNTooltip(); // 권한처리. if( (nRefresh & GUILD_UPDATE_GPERMISSION) || /// 2010.12.14 or 연산 수정 - prodongi (nRefresh & GUILD_UPDATE_CHANGE_PERMISSION) || (nRefresh & GUILD_UPDATE_CHANGE_PERMISSION_NAME) || (nRefresh & GUILD_UPDATE_PROMOTE) ) { AuthorityProcess(); } } //---------------------------- //// 권한처리. //AuthorityProcess(); // Grade if( ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_GINFO ) || ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_DONATION ) ) { int nGuildeGrade = m_GuildMgr.GetGuildGrade(); std::string stdGrade( SR( 759, "#@value@#", nGuildeGrade ) ); m_pControlGrade->SetCaption( CStringUtil::StringFormat( "%s", m_pControlGrade->GetFontSize(), stdGrade.c_str() ).c_str() ); } // Current int nLoginCount = m_GuildMgr.GetLoginMemberCount(); int nMemberCount = m_GuildMgr.GetMemberCount(); if( m_beforeGuildMemberCount != nMemberCount || m_beforeGuildMemberLoginCount != nLoginCount ) { std::string stdCurrent( SR( 893, "#@value@#", CStringUtil::StringFormat( "%d / %d", nLoginCount, nMemberCount ).c_str() ) ); m_pControlCurrent->SetCaption( CStringUtil::StringFormat( "%s", m_pControlCurrent->GetFontSize(), stdCurrent.c_str() ).c_str() ); m_beforeGuildMemberCount = nMemberCount; m_beforeGuildMemberLoginCount = nLoginCount; } } // 2010.06.10. Epic7 Part1 에서는 사용하지 않으므로 비활성처리. < 길드신청자 탭 > // m_pTabControl->SetDisableTab( GUILDTAB_TYPE::GUILDTAB_APPLICANT ); m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_APPLICANT ]->Disable(); } // 접속률 라인컨트롤. //RefreshLineControl(); //----------------------- // Tab Wnd Update. UpdateTabWnd(); // 단한번만... if( m_bFirstOpen ) m_bFirstOpen = false; } // Tab Wnd Update. void SUIGuildWnd::UpdateTabWnd() { for( int i=0; iForcedProcess( 0 ); } // 자신의 길드정보 컨트롤 확장. void SUIGuildWnd::ExtendOwnState() { if( m_BaseControl ) { KRect rt = m_BaseControl->GetRect(); // 원본크기로 축소함. if( m_bExtendLocal ) { rt.bottom = rt.top + m_nSrcHeightLocal; m_BaseControl->Resize( rt ); } // 확장시킴. else { rt.bottom = rt.top + rt.GetHeight() * 2; m_BaseControl->Resize( rt ); } m_bExtendLocal ^= true; // 확장여부 토글. // 버튼이미지 변경. dynamicCast< KUIControlSimpleButton * >( m_ArrOwnGuildStateControl[ 4 ] )->SetAniName( m_bExtendLocal ? "common_button_titanium_fold" : "common_button_titanium_unfold" ); // 길드정보 컨트롤의 보임, 숨김처리. SetShowGuildState(); } } // 길드정보 컨트롤의 보임, 숨김처리. void SUIGuildWnd::SetShowGuildState() { KRect rt = m_BaseControl->GetRect(); // // Base Control의 영역안에 포함되는 컨트롤들만 보임. int size = m_ArrOwnGuildStateControl.size(); for( int i=0; iGetRect() ) ) m_ArrOwnGuildStateControl[ i ]->SetShow( true ); else m_ArrOwnGuildStateControl[ i ]->SetShow( false ); } } // 관리모드적용. void SUIGuildWnd::ManageMode() { if( m_bManageMode ) { m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->SetAniName( "common_button_tab_beamblue_red" ); } else { m_arrTabButton[ GUILDTAB_TYPE::GUILDTAB_MEMBER ]->SetAniName( "common_button_tab_beamblue_cyan" ); } }