727 lines
25 KiB
C++
727 lines
25 KiB
C++
#include "stdafx.h"
|
|
#include <toolkit/XStringUtil.h>
|
|
#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( "<font:font_02><size:9><#2222aa><hcenter><vcenter>" );
|
|
//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();
|
|
//// <u> 태그의 경우 "abc" => "<u>abc</u>" 맨뒤에 </u> 를 자동으로 붙이게 되어 맨뒤 .. 처리에 문제가 발생한다.
|
|
|
|
|
|
// 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("<font:font_02><size:9><#ff8255><hcenter><vcenter><u>%s", m_pURLControl->GetCaption() ).c_str() );
|
|
m_pURLControl->SetCaption( CStringUtil::StringFormat("<font:font_02><size:%d><#ff8255><hcenter><vcenter>%s", m_pURLControl->GetFontSize(), m_pURLControl->GetCaption() ).c_str() );
|
|
// <u> 태그의 경우 "abc" => "<u>abc</u>" 맨뒤에 </u> 를 자동으로 붙이게 되어 맨뒤 .. 처리에 문제가 발생한다.
|
|
}
|
|
|
|
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( "<font:font_02><size:%d><hcenter><vcenter>%d", m_pCtrlGuildGrade->GetFontSize(), grade ).c_str() );
|
|
m_pCtrlGuildCurrent->SetCaption( CStringUtil::StringFormat( "<font:font_02><size:%d><hcenter><vcenter>%d / %d", m_pCtrlGuildCurrent->GetFontSize(), current, objective ).c_str() );
|
|
m_pCtrlGuildState->SetCaption( CStringUtil::StringFormat( "<font:font_02><size:%d><hcenter><vcenter>%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; i<maxSize; i++ )
|
|
{
|
|
// ListControl 의 Item.
|
|
KUIListItem * pItem = m_pListAllianceGuild->GetItem( 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( "<font:font_02><size:%d><hcenter><vcenter><#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 );
|
|
|
|
}
|