Files
2022-10-26 12:25:11 +08:00

1005 lines
29 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "uiCommunityInfo.h"
#include "uiCommunityMan/uiCommunityMan.h"
#include "uiSystemMan/uiSystemMan.h"
#include "Hero.h"
#include "GlobalFunc.h"
#include "interfacemanager.h"
#include "GameFramework.h"
#include "globalfunc.h"
#include "MapInfoParser.h"
#include "SceneBase.h"
#include "GuildRankInfoParser.h"
#ifdef _NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
#include "GuildSystem/GuildSystemFunction.h"
#include "GuildSystem/GuildSystemData.h"
#else
#include "uiGuildMan/uiGuildMan.h"
#endif //_NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
#include "AppearanceResourceCode.h"
//------------------------------------------------------------------------------
WzID uiCommunityInfo::m_wzId[COMMUNITY_INFO_DIALOG_MAX] =
{
#ifdef _NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL
StrToWzID("B999"),//COMMUNITY_INFO_DIALOG_EXIT
#else
StrToWzID("B001"),//COMMUNITY_INFO_DIALOG_EXIT
#endif //_NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL
StrToWzID("L001"),//COMMUNITY_INFO_DIALOG_LIST
StrToWzID("B002"),//COMMUNITY_INFO_DIALOG_BTN_GAME
StrToWzID("B003"),//COMMUNITY_INFO_DIALOG_BTN_MSG
StrToWzID("B004"),//COMMUNITY_INFO_DIALOG_BTN_REFRESH
StrToWzID("B005"),//COMMUNITY_INFO_DIALOG_BTN_CHAT
#ifdef _NA_0_20100527_ADD_CHAR_RELATION_MEMO
StrToWzID("E001"), //COMMUNITY_INFO_DIALOG_EDIT_MEMO_INPUT
StrToWzID("B006"), //COMMUNITY_INFO_DIALOG_BTN_MEMO_ENABLE
StrToWzID("B000"), //COMMUNITY_INFO_DIALOG_BTN_MEMO_UPDATE
#endif //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
StrToWzID("V000"),
StrToWzID("P003"),
};
//------------------------------------------------------------------------------
/**
*/
uiCommunityInfo::uiCommunityInfo(InterfaceManager *pUIMan)
: uiBase(pUIMan)
, m_bControlsInitialized(false)
, request_uimanager_id_(0)
, multilineedit_control_(NULL)
{
this->m_pCommunityMan =
static_cast<uiCommunityMan *>(this->GetUIMan()->GetUserInterfaceManager(UIMAN_COMMUNITY));
assert (m_pCommunityMan);
if (!this->m_pCommunityMan)
{
#ifdef _DEBUG
uiSystemMan * pSystemMan = (uiSystemMan *)g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM);
if(pSystemMan)
pSystemMan->Sys_VerifyLock(_T("m_pCommunityMan이 없습니다."));
#endif
this->ShowInterface(FALSE);
return;
}
//m_bShow = false;
}
//------------------------------------------------------------------------------
/**
*/
uiCommunityInfo::~uiCommunityInfo()
{
this->Release();
}
//------------------------------------------------------------------------------
/**
*/
void uiCommunityInfo::Init(CDrawBase* pDrawBase)
{
uiBase::Init(pDrawBase);
this->InitControls();
}
//------------------------------------------------------------------------------
/**
*/
void uiCommunityInfo::Release()
{
}
//------------------------------------------------------------------------------
/**
*/
void uiCommunityInfo::InitControls()
{
m_pCommunityInfoList = static_cast<CCtrlListWZ *>(getControl(COMMUNITY_INFO_DIALOG_LIST));
for(int i=0; i<COMMUNITY_INFO_BTN_MAX; ++i)
{
m_pBtnCtrls[i] = static_cast<CCtrlButtonWZ *>(getControl(COMMUNITY_INFO_DIALOG_BTN_GAME + i));
assert(m_pBtnCtrls[i]);
}
#ifdef _NA_0_20100527_ADD_CHAR_RELATION_MEMO
if (getControl(COMMUNITY_INFO_DIALOG_EDIT_MEMO_INPUT) != NULL)
{
if (getControl(COMMUNITY_INFO_DIALOG_EDIT_MEMO_INPUT)->GetCtrlStyle() & CTRL_ES_MULTILINE)
{
multilineedit_control_ = static_cast<CCtrlMultilineEditWZ*>(getControl(COMMUNITY_INFO_DIALOG_EDIT_MEMO_INPUT));
multilineedit_control()->SetLimitText(MAX_FRIEND_MEMO_LENGHT);
multilineedit_control()->SetLimitLine(4);
multilineedit_control()->GetVScroll()->ShowWindowWZ(WZ_HIDE);
multilineedit_control()->SetUseInputEnterKey(false);
}
}
#endif //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
this->m_bControlsInitialized = true;
}
//------------------------------------------------------------------------------
void uiCommunityInfo::OnShowWindow( BOOL val )
{
if (val)
{
//this->MoveDefaultWindowPos();
if (!this->m_bControlsInitialized)
{
this->ShowInterface(FALSE);
return;
}
//m_bShow = true;
keyMsg msg;
ZeroMemory(&msg,sizeof(msg));
msg.dwType = eDoType_dialog_community_info;
msg.wParam = InterfaceManager::DIALOG_COMMUNITY_INFO;
msg.DoSomething = GlobalFunc::DoShowWindow;
g_KeyQueueManager.PushBack(msg);
_prepareShow();
FriendMemo_InputButtonState(kFriendMemoButtonStatus_Disable);
RefreshList();
}
else
{
//m_bShow = false;
g_KeyQueueManager.DeleteMsg(eDoType_dialog_community_info);
}
}
//------------------------------------------------------------------------------
void uiCommunityInfo::OnButtonClick_UpdateMemo()
{
#ifdef _NA_0_20100527_ADD_CHAR_RELATION_MEMO
if (multilineedit_control() != NULL)
{
TCHAR memo[MAX_FRIEND_MEMO_LENGHT] = {NULL, };
ZeroMemory(memo, sizeof(memo));
multilineedit_control()->GetTextWZ(memo, MAX_FRIEND_MEMO_LENGHT);
if (_tcscmp(memo, GetManager()->m_FriendInfo.m_ptszMemo) != 0)
{
GetManager()->SEND_CW_FRIEND_MEMO_UPDATE_SYN(GetManager()->m_FriendInfo.m_dwCharGuid, memo);
//! 업데이터 해 놓는다.
StrnCopy(GetManager()->m_FriendInfo.m_ptszMemo, memo, MAX_FRIEND_MEMO_LENGHT);
//! 버튼 상태 변경
FriendMemo_InputButtonState(kFriendMemoButtonStatus_Lock);
}
else
{
//! multieditbox 에 있는 내용을 원상 복구 한다
multilineedit_control()->SetTextWZ(GetManager()->m_FriendInfo.m_ptszMemo);
//! 버튼 상태 변경
FriendMemo_InputButtonState(kFriendMemoButtonStatus_Disable);
}
}
#endif //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
}
//------------------------------------------------------------------------------
void uiCommunityInfo::FriendMemo_InputButtonState(FriendMemoButtonStatus status)
{
#ifdef _NA_0_20100527_ADD_CHAR_RELATION_MEMO
CControlWZ* control = NULL;
if (status == kFriendMemoButtonStatus_Modify)
{
control = getControl(COMMUNITY_INFO_DIALOG_BTN_MEMO_ENABLE);
if (control != NULL)
{
control->ShowWindowWZ(WZ_HIDE);
control->EnableWindowWZ(true);
}
control = getControl(COMMUNITY_INFO_DIALOG_BTN_MEMO_UPDATE);
if (control != NULL)
{
control->ShowWindowWZ(WZ_SHOW);
control->EnableWindowWZ(true);
}
control = getControl(COMMUNITY_INFO_DIALOG_EDIT_MEMO_INPUT);
if (control != NULL)
{
control->EnableWindowWZ(true);
control->OnFocusIn();
}
}
else if (status == kFriendMemoButtonStatus_Disable)
{
control = getControl(COMMUNITY_INFO_DIALOG_BTN_MEMO_ENABLE);
if (control != NULL)
{
control->ShowWindowWZ(WZ_SHOW);
control->EnableWindowWZ(true);
}
control = getControl(COMMUNITY_INFO_DIALOG_BTN_MEMO_UPDATE);
if (control != NULL)
{
control->ShowWindowWZ(WZ_HIDE);
control->EnableWindowWZ(true);
}
control = getControl(COMMUNITY_INFO_DIALOG_EDIT_MEMO_INPUT);
if (control != NULL)
{
control->EnableWindowWZ(false);
control->OnFocusOut();
}
}
else if (status == kFriendMemoButtonStatus_Lock)
{
control = getControl(COMMUNITY_INFO_DIALOG_BTN_MEMO_ENABLE);
if (control != NULL)
{
control->ShowWindowWZ(WZ_SHOW);
control->EnableWindowWZ(false);
}
control = getControl(COMMUNITY_INFO_DIALOG_BTN_MEMO_UPDATE);
if (control != NULL)
{
control->ShowWindowWZ(WZ_HIDE);
control->EnableWindowWZ(false);
}
control = getControl(COMMUNITY_INFO_DIALOG_EDIT_MEMO_INPUT);
if (control != NULL)
{
control->EnableWindowWZ(false);
control->OnFocusOut();
}
}
#endif //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
}
//------------------------------------------------------------------------------
/**
*/
void uiCommunityInfo::_prepareShow()
{
if(!GetManager())
{
return;
}
if (GetManager()->IsOnline(GetManager()->m_FriendInfo.m_ptszCharName) == FALSE)
{
// COMMUNITY_INFO_DIALOG_BTN_GAME : 게임 같이 하기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME]->EnableWindowWZ(false);
}
// COMMUNITY_INFO_DIALOG_BTN_MSG : 쪽지 보내기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG]->EnableWindowWZ(true);
}
// COMMUNITY_INFO_DIALOG_BTN_CHAT : 대화하기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT]->EnableWindowWZ(false);
}
return;
}
#ifdef _YMS_GUILD_DETAL_SPEC
if (request_uimanager_id() == UIMAN_GUILD)
{
// COMMUNITY_INFO_DIALOG_BTN_GAME : 게임 같이 하기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME]->EnableWindowWZ(true); //ShowWindowWZ(WZ_SHOW);
}
// COMMUNITY_INFO_DIALOG_BTN_MSG : 쪽지 보내기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG]->EnableWindowWZ(true); //ShowWindowWZ(WZ_SHOW);
}
// COMMUNITY_INFO_DIALOG_BTN_CHAT : 대화하기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT]->EnableWindowWZ(false); //ShowWindowWZ(WZ_HIDE);
}
return;
}
#ifdef _NA_0_20110613_GAME_SHOP_RENEWAL
else if (request_uimanager_id() == UIMAN_CONVENIENCESTORE)
{
// COMMUNITY_INFO_DIALOG_BTN_GAME : 게임 같이 하기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME]->EnableWindowWZ(false); //ShowWindowWZ(WZ_SHOW);
}
// COMMUNITY_INFO_DIALOG_BTN_MSG : 쪽지 보내기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG]->EnableWindowWZ(false); //ShowWindowWZ(WZ_SHOW);
}
// COMMUNITY_INFO_DIALOG_BTN_CHAT : 대화하기 표시
if (m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT]->EnableWindowWZ(false); //ShowWindowWZ(WZ_HIDE);
}
return;
}
#endif //_NA_0_20110613_GAME_SHOP_RENEWAL
#endif
if(GetManager()->GetPendingInfoMode() == eCM_FRIEND|| GetManager()->GetPendingInfoMode() == eCM_GROUP)
{
// COMMUNITY_INFO_DIALOG_BTN_GAME : 게임 같이 하기 표시
if(m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME]->EnableWindowWZ(true); //ShowWindowWZ(WZ_SHOW);
}
// COMMUNITY_INFO_DIALOG_BTN_MSG : 쪽지 보내기 표시
if(m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG]->EnableWindowWZ(true); //ShowWindowWZ(WZ_SHOW);
}
// COMMUNITY_INFO_DIALOG_BTN_CHAT : 대화하기 표시
if(m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT]->EnableWindowWZ(true); //ShowWindowWZ(WZ_SHOW);
}
}
else if(GetManager()->GetPendingInfoMode() == eCM_REVENGE)
{
// COMMUNITY_INFO_DIALOG_BTN_GAME : 게임 같이 하기 숨김
if(m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_GAME]->EnableWindowWZ(false); //ShowWindowWZ(WZ_HIDE);
}
// COMMUNITY_INFO_DIALOG_BTN_MSG : 쪽지 보내기 숨김
if(m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_MSG]->EnableWindowWZ(false); //ShowWindowWZ(WZ_HIDE);
}
// COMMUNITY_INFO_DIALOG_BTN_CHAT : 대화하기 숨김
if(m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT])
{
m_pBtnCtrls[COMMUNITY_INFO_BTN_CHAT]->EnableWindowWZ(false); //ShowWindowWZ(WZ_HIDE);
}
}
}
//------------------------------------------------------------------------------
/**
*/
BOOL uiCommunityInfo::_isEnable()
{
if(GENERALPARAM->IsNet())
{
if (this->IsLock())
return FALSE;
if(!g_pHero)
return FALSE;
if(g_pHero && g_pHero->IsShowFullMap())
return FALSE;
if(!GetManager())
return FALSE;
return TRUE;
}
else
{
return TRUE;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCommunityInfo::MessageProc( SI_MESSAGE * pMessage )
{
if (!_isEnable())
return;
if (GetManager() == NULL)
{
return;
}
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
switch( pMessage->eResultMsg )
{
case RT_MSG_LBUTTONCLICK:
{
switch( getCtrlIDToPos( pMessage->dwCtrlID ) )
{
#ifdef _NA_0_20100527_ADD_CHAR_RELATION_MEMO
case COMMUNITY_INFO_DIALOG_BTN_MEMO_ENABLE: // 메모 입력 활성화
{
FriendMemo_InputButtonState(kFriendMemoButtonStatus_Modify);
}
break;
case COMMUNITY_INFO_DIALOG_BTN_MEMO_UPDATE:
{
OnButtonClick_UpdateMemo();
}
break;
#endif //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
case COMMUNITY_INFO_DIALOG_BTN_GAME: // 같이 게임하기
{
if(GameFramework::GetCurrentScene()->GetType() == SCENE_TYPE_VILLAGE)
{
GetManager()->Send_CW_FRIEND_STATUS_JOIN_SYN();
}
else
{
//1424 마을에서만 할수 있다
g_InterfaceManager.GetInterfaceString( 1424, szMessage, INTERFACE_STRING_LENGTH );
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage);
}
}
break;
case COMMUNITY_INFO_DIALOG_BTN_MSG:
{
// 쪽지 쓰기
GetManager()->ShowWriteMailDlg(GetManager()->m_FriendInfo.m_ptszCharName);
}
break;
case COMMUNITY_INFO_DIALOG_BTN_CHAT:
{
GetManager()->RequestFriendChat(true);
}
break;
case COMMUNITY_INFO_DIALOG_BTN_REFRESH: //새로고침
{
GetManager()->RqstRefreshFriendInfo();
}
break;
case COMMUNITY_INFO_DIALOG_EXIT:
{
//m_bShow = false;
ShowInterface(FALSE);
}
break;
}
}
break;
case RT_MSG_SB_LINETOP:
{
if(getCtrlIDToPos( pMessage->dwCtrlID )
== COMMUNITY_VSCROLL_V000)
{
UpScroll();
}
}
break;
case RT_MSG_SB_LINEBOTTOM:
{
if(getCtrlIDToPos( pMessage->dwCtrlID )
== COMMUNITY_VSCROLL_V000)
{
DownScroll();
}
}
break;
case RT_MSG_SB_THUMBTRACK: //!< 썸을 드래그 하고 있다.
case RT_MSG_SB_THUMBPOSITION: //!< 썸을 드래그한후 마우스를 놓았다.
case RT_MSG_SB_ENDSCROLL: //!< 스크롤이 종료 되었다.
{
if(getCtrlIDToPos( pMessage->dwCtrlID )
== COMMUNITY_VSCROLL_V000)
{
ThumbScroll();
}
}
break;
default:
{
SolarDialog::MessageProc( pMessage );
}
break;
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCommunityInfo::OnUpdateSolarDialog()
{
//if(!m_bShow)
//{
// ShowInterface(FALSE);
// return;
//}
if (!_isEnable())
{
return;
}
#ifdef _NA_0_20100527_ADD_CHAR_RELATION_MEMO
if (multilineedit_control() != NULL)
{
TCHAR memo[MAX_FRIEND_MEMO_LENGHT + 20] = {NULL, };
ZeroMemory(memo, sizeof(memo));
multilineedit_control()->GetTextWZ(memo, MAX_FRIEND_MEMO_LENGHT + 20);
//! 길이 체크
if(_tcslen(memo) > MAX_FRIEND_MEMO_LENGHT)
{
ZeroMemory(memo, sizeof(memo));
multilineedit_control()->GetTextWZ(memo, MAX_FRIEND_MEMO_LENGHT);
multilineedit_control()->SetTextWZ(memo);
}
}
#endif //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
CCtrlVScrollWZ* pControl =
static_cast<CCtrlVScrollWZ*>(getControl(COMMUNITY_VSCROLL_V000));
if (m_pCommunityInfoList != NULL && pControl != NULL)
{
RECT area = m_pCommunityInfoList->GetSizeRect();
BYTE wheel_msg = uiBase::GetMouseWheelStatus(&area);
switch (wheel_msg)
{
case MOUSE_WHEEL_UP: return UpScroll();
case MOUSE_WHEEL_DOWN: return DownScroll();
}
}
}
//------------------------------------------------------------------------------
/**
*/
void uiCommunityInfo::_addListItem(int idx, COLORREF TextColor, TCHAR *pMsg)
{
DWORD c_dwBackColor = RGBA(0,0,0,0);
GlobalFunc::SetItemText(m_pCommunityInfoList, idx, pMsg);
m_pCommunityInfoList->SetItemFontID(idx, 0, StrToWzID("m212"));
m_pCommunityInfoList->SetItemTextColor(
idx,
0,
TextColor
);
m_pCommunityInfoList->SetItemBKColor(
idx,
0,
c_dwBackColor
);
m_pCommunityInfoList->SetItemSelTextColor(
idx,
0,
TextColor
);
}
//------------------------------------------------------------------------------
/**
*/
void uiCommunityInfo::RefreshList()
{
if(!m_pCommunityInfoList)
return;
if(!GetManager())
return;
m_pCommunityInfoList->DeleteItemAll();
DWORD c_dwCategoryTextColor = RGBA(0, 128, 128, 255);
DWORD c_dwTextColor = RGBA(255, 255, 255, 255);
TCHAR szTemp[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szTemp2[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
// 1671 %s님의 기본 정보
g_InterfaceManager.GetInterfaceString(1671, szTemp, INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, GetManager()->m_FriendInfo.m_ptszCharName);
int idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwCategoryTextColor, szMessage);
LEVELTYPE character_level = GetSelectPlayerLevel(GetManager()->m_FriendInfo.m_ptszCharName);
BYTE character_class = GetSelectPlayerClass(GetManager()->m_FriendInfo.m_ptszCharName);
// 1672 레벨: %d
g_InterfaceManager.GetInterfaceString(1672, szTemp, INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, character_level);
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
#ifdef _NA_006642_20120416_COMMUNITY_INFO_BUG_MODIFY
// 1673 종족: %s
GenderType::Value gender_type = GetSelectPlayerGender(GetManager()->m_FriendInfo.m_ptszCharName);
eCHAR_TYPE race_type = ResourceCode::GetImageClassType((eCHAR_TYPE)character_class, gender_type );
g_InterfaceManager.GetInterfaceString(1673, szTemp, INTERFACE_STRING_LENGTH);
Snprintf(szMessage,
INTERFACE_STRING_LENGTH-1,
szTemp,
GlobalFunc::GetRaceString(race_type));
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
#endif //_NA_006642_20120416_COMMUNITY_INFO_BUG_MODIFY
// 1730 클래스: %s
g_InterfaceManager.GetInterfaceString(1730, szTemp, INTERFACE_STRING_LENGTH);
Snprintf(szMessage,
INTERFACE_STRING_LENGTH-1,
szTemp,
GlobalFunc::GetClassString((eCHAR_TYPE)character_class));
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
// 1674 길드: [%s]의 %s
if(_tcslen(GetManager()->m_FriendInfo.m_tszGuildName))
{
g_InterfaceManager.GetInterfaceString(1674, szTemp, INTERFACE_STRING_LENGTH);
int iStringIndex = _getMemberStringIndex((eGUILD_DUTY)GetManager()->m_FriendInfo.m_byDuty);
if(iStringIndex > 0)
{
g_InterfaceManager.GetInterfaceString(iStringIndex, szTemp2, INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, GetManager()->m_FriendInfo.m_tszGuildName, szTemp2);
}
else
{
//1095 길드: %s
g_InterfaceManager.GetInterfaceString(1095, szTemp);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, GetManager()->m_FriendInfo.m_tszGuildName);
}
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
}
// 공백 한줄
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, _T(""));
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
// 1684 접속정보
g_InterfaceManager.GetInterfaceString(1684, szMessage, INTERFACE_STRING_LENGTH);
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwCategoryTextColor, szMessage);
if (GetManager()->IsOnline(GetManager()->m_FriendInfo.m_ptszCharName) == TRUE)
{
// 1677 접속중인 채널: %d 채널
g_InterfaceManager.GetInterfaceString(1677, szTemp, INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, GetManager()->m_FriendInfo.m_byChannel);
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
// 1678 캐릭터 상태: %s
g_InterfaceManager.GetInterfaceString(1678, szTemp, INTERFACE_STRING_LENGTH);
//캐릭터 상태:
int iZoneType = 685;//알수없음
switch(GetManager()->m_FriendInfo.m_byZoneType)
{
case eZONETYPE_LOBBY: iZoneType = 1679; break;//로비
case eZONETYPE_VILLAGE: iZoneType = 1336; break;//마을
case eZONETYPE_CHARSELECT: iZoneType = 50; break;//캐릭터씬
case eZONETYPE_FIELD: iZoneType = 1680; break;//필드
case eZONETYPE_CHUNTING: iZoneType = 641; break;//헌팅
case eZONETYPE_MISSION: iZoneType = 640; break;//미션
case eZONETYPE_PVP: iZoneType = 685; break;//PVP
case eZONETYPE_INSTANCE: iZoneType = 5455; break;//던젼
}
g_InterfaceManager.GetInterfaceString(iZoneType, szTemp2, INTERFACE_STRING_LENGTH ); // 알 수 없음
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, szTemp2);
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
if( GetManager()->m_FriendInfo.m_byZoneType == eZONETYPE_LOBBY ||
GetManager()->m_FriendInfo.m_byZoneType == eZONETYPE_CHUNTING ||
GetManager()->m_FriendInfo.m_byZoneType == eZONETYPE_MISSION ||
GetManager()->m_FriendInfo.m_byZoneType == eZONETYPE_PVP)
{
// 1682 진행중인 배틀존 번호: %d
if(GetManager()->m_FriendInfo.m_dwZoneKey)
{
g_InterfaceManager.GetInterfaceString(1682, szTemp, INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, GetManager()->m_FriendInfo.m_dwZoneKey);
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
}
}
// 1683 상세위치: %s
int iStrIndx = _getMapNameStringIndex(GetManager()->m_FriendInfo.m_MapCode);
if(iStrIndx)
{
g_InterfaceManager.GetInterfaceString(1683, szTemp, INTERFACE_STRING_LENGTH);
g_InterfaceManager.GetInterfaceString(iStrIndx, szTemp2, INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szTemp, szTemp2);
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
}
}
else
{
//! offline
g_InterfaceManager.GetInterfaceString(70501, szMessage ,INTERFACE_STRING_LENGTH);
idx = m_pCommunityInfoList->InsertItemBack();
_addListItem(idx, c_dwTextColor, szMessage);
}
#ifdef _NA_0_20100527_ADD_CHAR_RELATION_MEMO
if (multilineedit_control() != NULL)
{
multilineedit_control()->SetTextWZ(GetManager()->m_FriendInfo.m_ptszMemo);
}
#endif //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
resetScroll();
}
//------------------------------------------------------------------------------
/**
*/
int uiCommunityInfo::_getMapNameStringIndex(CODETYPE mapCode)
{
const sMAPINFO * pMapInfo = MapInfoParser::Instance()->FindMapInfo((MAPCODE)mapCode);
if(pMapInfo)
{
return pMapInfo->dwNCode;
}
return 0;
}
//------------------------------------------------------------------------------
/**
*/
int uiCommunityInfo::_getMemberStringIndex(eGUILD_DUTY eDuty)
{
DWORD dwStringIndex = 0;
uiGuildMan * pGuildMan = (uiGuildMan *) g_InterfaceManager.GetUserInterfaceManager(UIMAN_GUILD);
if( pGuildMan )
{
#ifdef _NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
dwStringIndex = GuildSystem::Function::GetGuildDutyStringCode(eDuty);
#else
GUILD_DUTY_USE_INFO * pDutyUseInfo = GuildRankInfoParser::Instance()->GetGuildDutyUseInfo(GRADE_AT_GUILD_CREATE, eDuty);
if(pDutyUseInfo)
dwStringIndex = pDutyUseInfo->m_dwStringCode;
#endif //_NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
}
return dwStringIndex;
}
//------------------------------------------------------------------------------
LEVELTYPE uiCommunityInfo::GetSelectPlayerLevel(TCHAR* character_name)
{
if (request_uimanager_id() == UIMAN_GUILD)
{
#ifdef _NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
GUILD_MEMBER_INFO* guild_member_info =
GuildSystem::GetGuildSystemData().GetGuildMemberInfo(character_name);
if (guild_member_info != NULL)
{
return guild_member_info->m_Level;
}
#else
uiGuildMan* guild_manager = static_cast<uiGuildMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_GUILD));
if (guild_manager)
{
stGUILD_MEMBER_INFO* member_info = guild_manager->GetGuildMemberInfo(character_name);
if (member_info)
{
return member_info->m_Level;
}
}
#endif //_NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
return 0;
}
return GetManager()->GetLevel();
}
#ifdef _NA_006642_20120416_COMMUNITY_INFO_BUG_MODIFY
GenderType::Value uiCommunityInfo::GetSelectPlayerGender(TCHAR* character_name)
{
return GetManager()->GetGender();
}
#endif //_NA_006642_20120416_COMMUNITY_INFO_BUG_MODIFY
//------------------------------------------------------------------------------
BYTE uiCommunityInfo::GetSelectPlayerClass(TCHAR* character_name)
{
if (request_uimanager_id() == UIMAN_GUILD)
{
#ifdef _NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
GUILD_MEMBER_INFO* guild_member_info =
GuildSystem::GetGuildSystemData().GetGuildMemberInfo(character_name);
if (guild_member_info != NULL)
{
return guild_member_info->m_byClass;
}
#else
uiGuildMan* guild_manager = static_cast<uiGuildMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_GUILD));
if (guild_manager)
{
stGUILD_MEMBER_INFO* member_info = guild_manager->GetGuildMemberInfo(character_name);
if (member_info)
{
return member_info->m_byClass;
}
}
#endif //_NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
return 0;
}
return GetManager()->GetClass();
}
void uiCommunityInfo::UpScroll()
{
CCtrlVScrollWZ* pControl =
static_cast<CCtrlVScrollWZ*>(getControl(COMMUNITY_VSCROLL_V000));
if(pControl == NULL)
{
return;
}
int pos = pControl->GetScrollPosWZ();
int mmin = 0, mmax = 0;
pControl->GetScrollRangeWZ(&mmin, &mmax);
if(pos > mmin)
{
--pos;
pControl->SetScrollPosWZ(pos);
}
m_pCommunityInfoList->SetBeginDrawIndex(pos);
}
void uiCommunityInfo::DownScroll()
{
CCtrlVScrollWZ* pControl =
static_cast<CCtrlVScrollWZ*>(getControl(COMMUNITY_VSCROLL_V000));
if(pControl == NULL)
{
return;
}
int pos = pControl->GetScrollPosWZ();
int mmin = 0, mmax = 0;
pControl->GetScrollRangeWZ(&mmin, &mmax);
if (pos < mmax)
{
++pos;
pControl->SetScrollPosWZ(pos);
}
m_pCommunityInfoList->SetBeginDrawIndex(pos);
}
void uiCommunityInfo::ThumbScroll()
{
CCtrlVScrollWZ* pControl =
static_cast<CCtrlVScrollWZ*>(getControl(COMMUNITY_VSCROLL_V000));
if(pControl == NULL)
{
return;
}
int pos2 = pControl->GetScrollPosWZ();
int pos = pos2;
int mmin = 0, mmax = 0;
pControl->GetScrollRangeWZ(&mmin, &mmax);
pos = max(mmin, pos);
pos = min(mmax, pos);
if(pos != pos2)
{
pControl->SetScrollPosWZ(pos);
}
m_pCommunityInfoList->SetBeginDrawIndex(pos);
}
void uiCommunityInfo::resetScroll()
{
CCtrlVScrollWZ* pControl =
static_cast<CCtrlVScrollWZ*>(getControl(COMMUNITY_VSCROLL_V000));
if(pControl == NULL)
{
return;
}
pControl->ShowWindowWZ(WZ_SHOW);
if(CControlWZ* pPictureControl = getControl(COMMUNITY_PICTURE_P003))
{
pPictureControl->ShowWindowWZ(WZ_SHOW);
}
int scroll_max_num = max(0, m_pCommunityInfoList->GetListRowCnt() - m_pCommunityInfoList->GetDrawRowCount());
if(scroll_max_num == 0)
{
pControl->ShowWindowWZ(WZ_HIDE);
if(CControlWZ* pPictureControl = getControl(COMMUNITY_PICTURE_P003))
{
pPictureControl->ShowWindowWZ(WZ_HIDE);
}
return;
}
int thumb_size = 100 / (scroll_max_num + 1);
thumb_size = max(10, thumb_size);
pControl->SetChangeSizeThumb(thumb_size);
pControl->SetScrollRangeWZ(0, scroll_max_num);
int begin_index = m_pCommunityInfoList->GetBeginDrawIndex();
int new_draw_index = begin_index <= scroll_max_num ? begin_index : scroll_max_num;
m_pCommunityInfoList->SetBeginDrawIndex(new_draw_index);
pControl->SetScrollPosWZ(new_draw_index);
}