#include "stdafx.h" #include #include "SStringDB.h" #include "SWorldLocationDB.h" #include "SDungeonResourceDB.h" #include "SGameManager.h" #include "SGameMessage.h" #include "SMessengerMgr.h" //#include "SGameMessageUI.h" #include "KUIControlScroll.h" #include "KUIListControl.h" #include "KUIControlButton.h" #include "SUIGuildSubInfoWnd.h" namespace { char g_buf[10] = { NULL, }; const int g_nAllianceGuildCount = 3; // 연합길드 리스트 기본 개수. const int g_ListSizeMAX = 5; std::string g_arrAllianceGuild[] = { "연합1", "연합2","연합3","연합4","연합5",}; } SUIGuildSubInfoWnd::SUIGuildSubInfoWnd( SGameManager * pGameManager ) : SUIWnd( pGameManager ), m_pListAllianceGuild( NULL ), // 연합길드 목록. m_pScrollBar( NULL ), m_pPosPopupWnd( NULL ), m_pURLControl( NULL ), m_nScrollPos( 0 ), m_bRefresh( GUILD_UPDATE::GUILD_UPDATE_NONE ), m_bUIRefresh( true ) { } SUIGuildSubInfoWnd::~SUIGuildSubInfoWnd() { Release(); } // 메모리 해제. void SUIGuildSubInfoWnd::Release() { SAFE_DELETE( m_pListAllianceGuild ); // 연합길드 목록. } SUIWnd* SUIGuildSubInfoWnd::CreateWnd( const char* szFile, KUIWndManager* pWndManager, KPoint kPos, int nWindowID ) { SUIWnd::CreateWnd( szFile, pWndManager, kPos, nWindowID ); // 텍스트 데코레이션 뽑아내기. KUIWnd * pWnd = GetChild( "guild_data_text_06" ); // 길드명. string strOrg( pWnd->GetCaption() ); std::string::size_type sizeEnd = strOrg.find_last_of( ">" ); m_strDecoration = strOrg.substr( 0, ++sizeEnd ); pWnd->SetCaption( m_strDecoration.c_str() ); KUIControlButton * pBtn = dynamicCast< KUIControlButton * >( GetChild( "button_list_select_01" ) ); pBtn->SetEnableColor( "<#ffffff>" ); // pBtn->SetDisableColor( "<#0000ff>" ); // pBtn->SetDisableColor( "<#ffffff>" ); // pBtn->Enable(); //------------------------------------ // ListControl 생성. //SAFE_DELETE( m_pListAllianceGuild ); m_pListAllianceGuild = new KUIListControl( this, "list_control_01", "", "list_item_01", g_nAllianceGuildCount ); // Item column m_pListAllianceGuild->AddStringItemColumn( "button_list_select_01" ); // Create m_pListAllianceGuild->Create(); //------------------------------------- // 스크롤바. // 2010.09.20 - prodongi m_pScrollBar = dynamicCast< KUIControlVScrollSmallEx* >(GetChild( "scrollbar_guild_list" )); //m_pScrollBar = static_cast< KUIControlVScroll* >(GetChild( "scrollbar_guild_list" )); // 연합길드정보 팝업윈도우 위치지정용 컨트롤. m_pPosPopupWnd = GetChild( "pos_alliance_info_control_01" ); // URL Control; m_pURLControl = dynamicCast< KUIControl * >( GetChild( "text_guild_banner_03" ) ); m_pURLControl->SetCaption( " " ); // URL GetChild( "guild_data_text_07" )->SetCaption( m_strDecoration.c_str() ); // 길드장. GetChild( "guild_data_text_08" )->SetCaption( m_strDecoration.c_str() ); // 연합길드장. GetChild( "guild_data_text_11" )->SetCaption( m_strDecoration.c_str() ); // 길드소유던전 GetChild( "guild_data_text_12" )->SetCaption( m_strDecoration.c_str() ); GetChild( "guild_data_text_13" )->SetCaption( m_strDecoration.c_str() ); GetChild( "guild_data_text_17" )->SetCaption( m_strDecoration.c_str() ); GetChild( "alliance_guild_data_text_05" )->SetCaption( m_strDecoration.c_str() );// 연합길드명 GetChild( "alliance_guild_data_text_06" )->SetCaption( m_strDecoration.c_str() );// 연합길드장 GetChild( "alliance_guild_data_text_07" )->SetCaption( m_strDecoration.c_str() );// 연합소유던전 ///////////////////////////////////////////////////////////////////////////////////////////////////////// m_pCtrlGuildName = dynamicCast< KUIControl * >( GetChild( "guild_data_text_06" ) ); // 길드명. m_pCtrlGuildMaster = dynamicCast< KUIControl * >( GetChild( "guild_data_text_07" ) ); // 길드장. m_pCtrlGuildCount = dynamicCast< KUIControl * >( GetChild( "guild_data_text_08" ) ); // 길드원수. m_pCtrlGuildDungeon = dynamicCast< KUIControl * >( GetChild( "guild_data_text_11" ) ); // 소유던전. m_pCtrlGuildGrade = dynamicCast< KUIControl * >( GetChild( "guild_data_text_12" ) ); m_pCtrlGuildCurrent = dynamicCast< KUIControl* >( GetChild( "guild_data_text_13" ) ); m_pCtrlGuildState = dynamicCast< KUIControl* >( GetChild( "guild_data_text_17" ) ); m_pCtrlAllianceName = dynamicCast< KUIControl * >( GetChild( "alliance_guild_data_text_05" ) ); // 연합길드명. m_pCtrlAllianceMaster = dynamicCast< KUIControl * >( GetChild( "alliance_guild_data_text_06" ) ); // 연합길드장. m_pCtrlAllianceDungeon = dynamicCast< KUIControl * >( GetChild( "alliance_guild_data_text_07" ) ); // 소유던전 return this; } bool SUIGuildSubInfoWnd::InitControls( KPoint kPos ) { // // 텍스트 데코레이션 뽑아내기. // KUIWnd * pWnd = GetChild( "guild_data_text_06" ); // 길드명. // string strOrg( pWnd->GetCaption() ); // std::string::size_type sizeEnd = strOrg.find_last_of( ">" ); // m_strDecoration = strOrg.substr( 0, ++sizeEnd ); // pWnd->SetCaption( m_strDecoration.c_str() ); // // // KUIControlButton * pBtn = static_cast< KUIControlButton * >( GetChild( "button_list_select_01" ) ); // pBtn->SetEnableColor( "<#ffffff>" ); //// pBtn->SetDisableColor( "<#0000ff>" ); //// pBtn->SetDisableColor( "<#ffffff>" ); //// pBtn->Enable(); // // //------------------------------------ // // ListControl 생성. // //SAFE_DELETE( m_pListAllianceGuild ); // // m_pListAllianceGuild = new KUIListControl( this, "list_control_01", "", "list_item_01", g_nAllianceGuildCount ); // // // Item column // m_pListAllianceGuild->AddStringItemColumn( "button_list_select_01" ); // // // Create // m_pListAllianceGuild->Create(); // //------------------------------------- // // // // 스크롤바. // m_pScrollBar = static_cast< KUIControlVScroll* >(GetChild( "scrollbar_guild_list" )); // // // 연합길드정보 팝업윈도우 위치지정용 컨트롤. // m_pPosPopupWnd = GetChild( "pos_alliance_info_control_01" ); // // // URL Control; // m_pURLControl = static_cast< KUIControl * >( GetChild( "text_guild_banner_03" ) ); // // m_pURLControl->SetCaption( " " ); // URL // GetChild( "guild_data_text_07" )->SetCaption( m_strDecoration.c_str() ); // 길드장. // GetChild( "guild_data_text_08" )->SetCaption( m_strDecoration.c_str() ); // 연합길드장. // GetChild( "guild_data_text_11" )->SetCaption( m_strDecoration.c_str() ); // 길드소유던전 // GetChild( "alliance_guild_data_text_05" )->SetCaption( m_strDecoration.c_str() );// 연합길드명 // GetChild( "alliance_guild_data_text_06" )->SetCaption( m_strDecoration.c_str() );// 연합길드장 // GetChild( "alliance_guild_data_text_07" )->SetCaption( m_strDecoration.c_str() );// 연합소유던전 // // // // ///////////////////////////////////////////////////////////////////////////////////////////////////////// // // m_pCtrlGuildName = static_cast< KUIControl * >( GetChild( "guild_data_text_06" ) ); // 길드명. // m_pCtrlGuildMaster = static_cast< KUIControl * >( GetChild( "guild_data_text_07" ) ); // 길드장. // m_pCtrlGuildCount = static_cast< KUIControl * >( GetChild( "guild_data_text_08" ) ); // 길드원수. // m_pCtrlGuildDungeon = static_cast< KUIControl * >( GetChild( "guild_data_text_11" ) ); // 소유던전. // m_pCtrlAllianceName = static_cast< KUIControl * >( GetChild( "alliance_guild_data_text_05" ) ); // 연합길드명. // m_pCtrlAllianceMaster = static_cast< KUIControl * >( GetChild( "alliance_guild_data_text_06" ) ); // 연합길드장. // m_pCtrlAllianceDungeon = static_cast< KUIControl * >( GetChild( "alliance_guild_data_text_07" ) ); // 소유던전 // return SUIWnd::InitControls( kPos ); } void SUIGuildSubInfoWnd::OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd) { if( bOpen ) { // Guild Main Wnd 옆의 위치 잡기. KUIWnd *pInfoWnd = m_pManager->FindWnd( "window_guild_main" ); if( pInfoWnd ) MovePos( pInfoWnd->GetRect().right - 4, pInfoWnd->GetRect().top ); if( m_bUIRefresh ) { // 리스트의 각 아이템의 상태정보. if( m_pListAllianceGuild ) { m_pListAllianceGuild->RefreshItemState( g_ListSizeMAX ); // Scroll bar RefreshScrollbar(); // List 설정. RefreshList( m_nScrollPos ); } // 컨트롤에 데이터 설정. DataMapping( m_bRefresh ); } m_bUIRefresh = false; m_bRefresh = GUILD_UPDATE::GUILD_UPDATE_NONE; } else { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO_ALLIANCE, false ) ); m_bUIRefresh = false; m_bRefresh = GUILD_UPDATE::GUILD_UPDATE_NONE; } } void SUIGuildSubInfoWnd::ProcMsgAtStatic( SGameMessage* pMsg ) { switch( pMsg->nType ) { case IMSG_UI_MOVE: { SIMSG_UI_MOVE* pMoveMsg = ( SIMSG_UI_MOVE* )pMsg; MovePos( pMoveMsg->m_nX, pMoveMsg->m_nY ); // 위치이동. m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_MOVE( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO_ALLIANCE, m_pPosPopupWnd->GetRect().right, m_pPosPopupWnd->GetRect().top ) ); pMsg->bUse = true; } break; case IMSG_UI_SEND_DATA: { SIMSG_UI_SEND_DATA *pData = (SIMSG_UI_SEND_DATA *)pMsg; // 길드정보 변경. //if( pData->m_strString == "guild_update" && !(pData->m_dwData & GUILD_UPDATE::GUILD_UPDATE_CHANGE_PERMISSION_NAME) ) if( pData->m_strString == "guild_update" ) { if( this->IsShow() ) { if( pData->m_dwData & GUILD_UPDATE::GUILD_UPDATE_AINFO ) { // 연합길드리스트 컨트롤 Refresh. bintitle.2010.11.02 RefreshScrollbar(); // Scroll bar RefreshList( m_nScrollPos ); // List 설정. } m_bRefresh |= pData->m_dwData; // 컨트롤에 데이터 설정. DataMapping( m_bRefresh ); m_bUIRefresh = false; m_bRefresh = GUILD_UPDATE::GUILD_UPDATE_NONE; } else { m_bRefresh |= pData->m_dwData; // 갱신조건 누적. m_bUIRefresh = true; } //// 연합길드리스트 컨트롤 Refresh. bintitle.2010.11.02 //RefreshScrollbar(); // Scroll bar //RefreshList( m_nScrollPos ); // List 설정. //// 컨트롤에 데이터 설정. //DataMapping(); pMsg->bUse = true; } // 연합길드정보 변경. else if( pData->m_strString == "allianceGuild_update" ) { // Scroll bar RefreshScrollbar(); // List 설정. RefreshList( m_nScrollPos ); m_bRefresh |= GUILD_UPDATE::GUILD_UPDATE_MAX; // 컨트롤에 데이터 설정. DataMapping( m_bRefresh ); pMsg->bUse = true; } } break; } } void SUIGuildSubInfoWnd::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ) { switch( nMessage ) { // 윈도우 이동 case KUI_MESSAGE::KGENWND_MOVE: { LimitMoveWnd(); // 게임 외부로 나가지 못하게 제한 } break; case KUI_MESSAGE::KBUTTON_CLICK : if( !::_stricmp( lpszControlID, "button_close" ) ) { CloseWnd(); //m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO, false) ); } if( !::_stricmp( lpszControlID, "button_donate" ) ) { KRect rt; KUIWnd * pPosWnd = this->m_pGameManager->GetWndManager()->FindWnd("window_guild_sub_manage", "guild_class_text_01"); if( pPosWnd ) rt = pPosWnd->GetRect(); //// 길드맴버 팝업메뉴( 등급관리 ) -> 길드관리 Open -> 길드원관리 패널 Open m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_GUILD_WNDMSG( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MAINWND, IMSG_UI_GUILD_DONATE_MODE ) ); // 해당 팝업 윈도우 오픈. OpenPopupWnd( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE_CLASS, rt.left-7, rt.top ); // 길드맴버 팝업메뉴( 등급관리 ) -> 길드원관리패널( 길드원제명 팝업 오픈 ) m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_GUILD_WNDMSG( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MAINWND, SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_MANAGE, IMSG_UI_GUILD_DONATE_MODE ) ); } break; //--------------------------------- // Scroll case KUI_MESSAGE::KSCROLL_SELECT : { m_nScrollPos = max( (int)lparam, 0 ); // 스크롤이 계속 내려가는걸 방지. int nMembersSize = m_GuildMgr.GetAllianceSize(); if( nMembersSize < m_pListAllianceGuild->GetListConut() ) // + m_pListGuild->GetExtendItemCount() ) ) m_nScrollPos = 0; // 연합길드 재설정. RefreshList( m_nScrollPos ); // 스크롤바 조절. RefreshScrollbar(); } break; case KUI_MESSAGE::KLIST_ITEM_LBUTTON_DOWN : // ** MSG_LISTCONTROL msg = *( (MSG_LISTCONTROL *)( &pumpMsg ) ); { MSG_LISTCONTROL msg = *( (MSG_LISTCONTROL *)( &lparam ) ); // // ListControl 을 선택. KUIControl * pControl; if( m_pListAllianceGuild && m_pListAllianceGuild->GetControl( pControl, ( ITEMTYPE )msg.type, msg.itemIndex, msg.columnIndex ) ) { // // 아이템 if( ITEMTYPE::TYPE_ITEM_Base == msg.type || ITEMTYPE::TYPE_ITEM_Column == msg.type ) { // 길드명 컨트롤. if( !::_stricmp( pControl->GetID(), "button_list_select_01" ) ) { //m_pGameManager->PostMsgAtDynamic( new SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::_MSGBOXID::MSGBOX_GUILD_YES, pControl->GetCaption() ) ); // 길드명 확인용. //----------------------- // 연합길드정보 팝업 Wnd. // 위치이동. m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_MOVE( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO_ALLIANCE, m_pPosPopupWnd->GetRect().right, m_pPosPopupWnd->GetRect().top ) ); // 이전에 열려있을 경우를 대비해서 닫는다. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO_ALLIANCE, false ) ); // 팝업 Wnd 열기. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO_ALLIANCE, true ) ); // 연합길드 전달. /*m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO_ALLIANCE, g_arrAllianceGuild[ m_nScrollPos + msg.itemIndex ].c_str(), "AllianceGuildName" ) );*/ m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO_ALLIANCE, "AllianceGuildName", reinterpret_cast< void * >( m_GuildMgr.GetAllianceGuildByIndex( m_nScrollPos + msg.itemIndex ) ) ) ); } } }// if } break; } SUIWnd::PumpUpMessage( lpszControlID, nMessage, lparam, wparam ); } DWORD SUIGuildSubInfoWnd::OnMouseMessage(DWORD dwMessage, int x, int y) { if( dwMessage == KLBUTTON_DBLCLK ) { // URL if( m_pURLControl && m_pURLControl->IsInRect( x, y ) ) { /*std::string strURL( m_pURLControl->GetCaption() ); std::string::size_type nPos = strURL.find_last_of( ">" ); if( nPos != std::string::npos ) { strURL = strURL.substr( ++nPos, strURL.size() ); } if( strURL != "" && strURL.size() > 0 ) ShellExecute( NULL, NULL, "iexplore.exe", strURL.c_str(), NULL, SW_SHOWNORMAL );*/ std::string strURL( m_GuildMgr.GetURL() ); if( strURL != "" && strURL.size() > 0 ) ShellExecute( NULL, NULL, "iexplore.exe", strURL.c_str(), NULL, SW_SHOWNORMAL ); } } else if( dwMessage == KLBUTTON_DOWN ) { // ListControl 의 Mouse Event 처리. if( m_pListAllianceGuild ) m_pListAllianceGuild->OnMouseMessage( dwMessage, x, y ); } return SUIWnd::OnMouseMessage( dwMessage, x, y ); } // 창 닫기. void SUIGuildSubInfoWnd::CloseWnd() { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_SUB_INFO, false) ); } // 컨트롤에 데이터 설정. void SUIGuildSubInfoWnd::DataMapping( DWORD nRefresh ) { string strText; std::string::size_type nSize; //// URL //char * pURL = const_cast< char * >( m_GuildMgr.GetURL() ); //std::string strURL( "<#2222aa>" ); //strURL.append( pURL == NULL ? "" : pURL ); //std::string::size_type nSize; ///* //while( ( nSize = strURL.find( "http://" ) ) != std::string::npos ) //{ // strURL.replace( nSize, 7, "" ); //}*/ //m_pURLControl->SetCaption( strURL.c_str() ); //m_pURLControl->CutCaptionNTooltip(); //// 태그의 경우 "abc" => "abc" 맨뒤에 를 자동으로 붙이게 되어 맨뒤 .. 처리에 문제가 발생한다. // URL if( ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_URL ) || /// 2010.12.14 or 연산 수정 - prodongi ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_GINFO ) ) { char * pURL = const_cast< char * >( m_GuildMgr.GetURL() ); std::string strURL = pURL == NULL ? " " : pURL; std::string strTemp( strURL ); XStringUtil::Replace( strTemp, "http://", "" ); if( strTemp == "" || strTemp.size() < 1 ) strURL = strTemp; m_pURLControl->SetCaption( strURL.c_str() ); m_pURLControl->CutCaptionNTooltip(); //m_pURLControl->SetCaption( CStringUtil::StringFormat("<#ff8255>%s", m_pURLControl->GetCaption() ).c_str() ); m_pURLControl->SetCaption( CStringUtil::StringFormat("<#ff8255>%s", m_pURLControl->GetFontSize(), m_pURLControl->GetCaption() ).c_str() ); // 태그의 경우 "abc" => "abc" 맨뒤에 를 자동으로 붙이게 되어 맨뒤 .. 처리에 문제가 발생한다. } if( ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_DONATION ) || ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_GINFO ) ) { int grade = m_GuildMgr.GetGuildGrade(); int current = m_GuildMgr.GetGuildPoint(); int objective = m_GuildMgr.GetGuildObjectif(); m_pCtrlGuildGrade->SetCaption( CStringUtil::StringFormat( "%d", m_pCtrlGuildGrade->GetFontSize(), grade ).c_str() ); m_pCtrlGuildCurrent->SetCaption( CStringUtil::StringFormat( "%d / %d", m_pCtrlGuildCurrent->GetFontSize(), current, objective ).c_str() ); m_pCtrlGuildState->SetCaption( CStringUtil::StringFormat( "%s", m_pCtrlGuildCurrent->GetFontSize(), SR( 754, "#@value@#", grade ).c_str() ).c_str() ); } // 길드명. if( ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_CHANGE_GUILD_NAME ) || /// 2010.12.14 or 연산 수정 - prodongi ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_GINFO ) ) { strText = m_GuildMgr.GetGuildName(); m_pCtrlGuildName->SetCaption( ( m_strDecoration + strText ).c_str() ); m_pCtrlGuildName->CutCaptionNTooltip(); } // 길드장. if( ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_GINFO ) || /// 2010.12.14 or 연산 수정 - prodongi ( nRefresh & GUILD_UPDATE::GUILD_UPDATE_PROMOTE ) ) { strText = m_GuildMgr.GetGuildLeaderName(); //pControl = static_cast< KUIControl * >( GetChild( "guild_data_text_07" ) ); m_pCtrlGuildMaster->SetCaption( ( m_strDecoration + strText ).c_str() ); m_pCtrlGuildMaster->CutCaptionNTooltip(); } // 길드원수. //char buf[10]; itoa( m_GuildMgr.GetMemberCount(), g_buf, 10 ); strText = g_buf; //pControl = static_cast< KUIControl * >( GetChild( "guild_data_text_08" ) ); m_pCtrlGuildCount->SetCaption( ( m_strDecoration + strText ).c_str() ); m_pCtrlGuildCount->CutCaptionNTooltip(); // 소유던전. std::string strDungeon(""); if( nRefresh & GUILD_UPDATE::GUILD_UPDATE_GINFO ) { strText = m_strDecoration; int nDungeonID = GetDungeonResDB().GetDungeonNameID( m_GuildMgr.GetGuildDungeonID() ); strText.append( GetStringDB().GetString( nDungeonID ) ); nSize = strText.find( "empty" ); strText = nSize == -1 ? strText : m_strDecoration; //pControl = static_cast< KUIControl * >( GetChild( "guild_data_text_11" ) ); string strCaption(" "); if( nSize == -1 ) // 소유던전존재. { strCaption = strText; if( !m_GuildMgr.GetIsAlliance() ) // 연합소속. strCaption.append( "<$1819:_(연합)>" ); } //m_pCtrlGuildDungeon->SetCaption( CStringUtil::StringFormat( m_GuildMgr.GetIsAlliance() ? "%s" : "%s<$1819:_(연합)>", strText.c_str() ).c_str() ); m_pCtrlGuildDungeon->SetCaption( strCaption.c_str() ); m_pCtrlGuildDungeon->CutCaptionNTooltip(); strDungeon = strText; } // 연합길드. if( nRefresh & GUILD_UPDATE::GUILD_UPDATE_AINFO ) { if( !m_GuildMgr.GetIsAlliance() ) { SAllianceGuild * pAGuild = m_GuildMgr.GetAllianceGuildByIndex( 0 ); // 연합길드명. //pControl = static_cast< KUIControl * >( GetChild( "alliance_guild_data_text_05" ) ); m_pCtrlAllianceName->SetCaption( ( m_strDecoration + pAGuild->strAllianceName + CStringUtil::StringFormat( "(%d<$1853:_명>)", pAGuild->nAllianceMemberCount ) ).c_str() ); m_pCtrlAllianceName->CutCaptionNTooltip(); // 연합길드장. const char * pAllianceMaster = m_GuildMgr.GetAllianceGuildMaster( m_GuildMgr.GetGuildID() ); if( pAllianceMaster ) { strText = m_strDecoration; strText.append( pAllianceMaster ); // m_pGameManager->PostMsgAtDynamic( new SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::_MSGBOXID::MSGBOX_GUILD_YES, pAllianceMaster ) ); const char * pAllianceGuildName = m_GuildMgr.GetAllianceMasterToGuild(); if( pAllianceGuildName ) { //pControl = static_cast< KUIControl * >( GetChild( "alliance_guild_data_text_06" ) ); //pControl->SetCaption( ( strText + CStringUtil::StringFormat("(%s<$1822:소속>)", pAllianceGuildName ) ).c_str() ); m_pCtrlAllianceMaster->SetCaption( CStringUtil::StringFormat("%s(%s)", strText.c_str(), pAllianceGuildName ).c_str() ); m_pCtrlAllianceMaster->CutCaptionNTooltip(); } //GetChild( "alliance_guild_data_text_06" )->SetCaption( strDungeon.c_str() ); } // 소유던전 //pControl = static_cast< KUIControl * >( GetChild( "alliance_guild_data_text_07" ) ); m_pCtrlAllianceDungeon->SetCaption( strDungeon.c_str() ); m_pCtrlAllianceDungeon->CutCaptionNTooltip(); } else { // 연합길드명. m_pCtrlAllianceName->SetCaption( " " ); // 연합길드장. m_pCtrlAllianceMaster->SetCaption( " " ); } //SAllianceGuild * pAllianceGuild = m_GuildMgr.GetAllianceGuild(); //if( pAllianceGuild ) //{ // // pAllianceGuild->strAllianceName // 연합명 // // pAllianceGuild->nAllianceMemberCount // 연합맴버수 // // pAllianceGuild->nAllianceMasterGuildSID // 연합장 // //} } } // 해당 팝업 윈도우 오픈. void SUIGuildSubInfoWnd::OpenPopupWnd( int wndID, int posX, int posY ) { SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE wndType = (SIMSG_TOGGLE_UIWINDOW::_UIWINDOW_TYPE)wndID; m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( wndType, false ) ); // 이전에 열려있을 경우를 대비해서 닫는다. m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_MOVE( wndType, posX, posY ) ); // 위치 지정. m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( wndType, true ) ); // 팝업 Wnd 열기. } // 스크롤바 설정. void SUIGuildSubInfoWnd::RefreshScrollbar() { if( m_pScrollBar && m_pListAllianceGuild ) { m_pScrollBar->SetScrollRange( m_pListAllianceGuild->GetListConutMAX(), g_ListSizeMAX ); } } // 스크롤바 설정. void SUIGuildSubInfoWnd::RefreshList( int nScroll ) { if( m_pListAllianceGuild == NULL ) return; KUIControl * pControl = NULL; int maxSize = m_pListAllianceGuild->GetListConutMAX(); // 리스트 최대개수. int textIndex = 0; for( int i=0; iGetItem( i ); if( pItem ) { // index가 권한목록 최대개수 이하인동안 Refresh. if( i + nScroll < m_GuildMgr.GetAllianceSize() ) { // 연합길드 텍스트 인덱스. textIndex = i + nScroll; // 컨트롤에 텍스트 맵핑. pItem->GetControl( pControl, "button_list_select_01" ); //pControl->SetCaption( ( m_strDecoration + g_arrAllianceGuild[ textIndex ] ).c_str() ); if( !m_GuildMgr.GetIsAlliance() ) { SAllianceGuild * pAGuild = m_GuildMgr.GetAllianceGuildByIndex( textIndex ); if( pAGuild ) { //pControl->SetCaption( pAGuild->strName.c_str() ); pControl->Enable(); pControl->SetCaption( CStringUtil::StringFormat( "<#ffffff>%s", pControl->GetFontSize(), pAGuild->strName.c_str() ).c_str() ); /*pControl->SetCaption( ( m_strDecoration + pAGuild->strName ).c_str() ); if( pControl->IsDisable() ) pControl->Enable(); */ } } ////------------------------------- //// ** 해당 아이템을 확장 or 축소(원본크기) 한다. m_pListAllianceGuild->SetResize( i, textIndex, 1 ); } else break; } }// for ////------------------------------- //// ** 리스트정보 최종 업데이트. m_pListAllianceGuild->RefreshList( m_nScrollPos ); }