Files
Leviathan/Client/Game/game/Interface/SUIGuildSubInfoWnd.cpp
T
2026-06-01 12:46:52 +02:00

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 );
}