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

746 lines
21 KiB
C++

//------------------------------------------------------------------------------
// uiGuildCreate_func.cpp
// (C) 2005 ckbang
//------------------------------------------------------------------------------
#include "SunClientPrecompiledHeader.h"
#ifdef _NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
#else
#include "uiGuildMain.h"
#include "battleroomentry.h"
#include "MapInfoParser.h"
#include "BattleScene.h"
#include "uiGuildMan/uiGuildMan.h"
#include "interfacemanager.h"
#include "GlobalFunc.h"
#include "uiGuildDutyVest/uiGuildDutyVest.h"
#include "uiGuildRightDelegation/uiGuildRightDelegation.h"
#include "uisystemman/uiSystemMan.h"
#include "GuildRankInfoParser.h"
#include "uiGuildMemberRightView/uiGuildMemberRightView.h"
#include "GuildRightInfoParser.h"
#include "uiGuildNotice/uiGuildNotice.h"
#include "uiGuildCorpsChange/uiGuildCorpsChange.h"
#include "GameConst_Color.h"
//------------------------------------------------------------------------------
/**
*/
void fnGuildMasterDelegation(bool bYes)
{
if( bYes )
{
uiGuildMain * pGuildMain = GET_CAST_DIALOG( uiGuildMain, IM_GUILD_MANAGER::GUILD_MAIN );
if( pGuildMain )
{
MSG_CG_GUILD_CHANGE_MASTER_SYN SendMsg;
StrnCopy(SendMsg.m_szTargetCharName, pGuildMain->GetAttemptChageMasterName(),MAX_CHARNAME_LENGTH);
GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendMsg, sizeof(SendMsg) );
}
}
}
void uiGuildMain::updateMemberInfos()
{
assert (this->GetManager());
if (!this->GetManager())
return;
if (!this->GetManager()->IsGuildInfo())
return;
const VEC_GUILD_MEMBER & rGuildMembers = GetManager()->GetGuildMembers();
if( rGuildMembers.empty() )
return;
int current_select = m_pLstControl->GetCurSel();
this->m_pLstControl->DeleteItemAll();
this->m_pLstControl->SetBeginDrawIndex(0);
this->m_pLstControl->SetColorSelBar(RGBA (150, 10, 10, 180));
int start, iCorpMemberNum =0;
start = this->m_pScrollControl->GetScrollPosWZ();
for (int i=0; i<(int)rGuildMembers.size(); ++i)
{
if( rGuildMembers[i].m_byCorpsNum != m_iCurSelCorps)
continue;
iCorpMemberNum++;
if( iCorpMemberNum <= m_MaxPage )
{
int idx = this->m_pLstControl->InsertItemBack();
this->m_pLstControl->SetItemBKColor(idx, 0, RGBA (150, 10, 10, 180));
}
}
int iPage = iCorpMemberNum- m_MaxPage;
if(iPage<=0)iPage=0;
this->m_pScrollControl->SetScrollRangeWZ(0, iPage);
m_pLstControl->SetCurSel(current_select);
}
//------------------------------------------------------------------------------
/**
*/
void
uiGuildMain::renderMemberInfos()
{
assert (this->GetManager());
if (!this->GetManager())
return;
if (!this->GetManager()->IsGuildInfo())
return;
DWORD dwNameColor = WzColor_RGBA (255, 255, 255, 255);
const int c_iTOP_Margin = 3;
const int c_iLEFT_Margin = 2;
const int c_iHEIGHT_Gap = 20;
RECT rc_listctrl;
rc_listctrl = this->m_pLstControl->GetSizeRect();
rc_listctrl.top += c_iTOP_Margin;
rc_listctrl.left += c_iLEFT_Margin;
#ifdef _INTERNATIONAL_UI
this->GetDrawBase()->x_pManagerTextOut->StartToUseFont(StrToWzID("st10"));
#else
this->GetDrawBase()->x_pManagerTextOut->StartToUseFont(StrToWzID("mn12"));
#endif//_INTERNATIONAL_UI
RECT rc;
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
int i,insertCount, Ypos, Xpos1, Xpos2;
int iAllCorpMemberIndex =0;
int iStartIndex = 0;
iStartIndex = this->m_pScrollControl->GetScrollPosWZ();
const VEC_GUILD_MEMBER & rGuildMembers = GetManager()->GetGuildMembers();
for (i=0, insertCount=0; i<(int)rGuildMembers.size(); ++i)
{
stGUILD_MEMBER_INFO* pMember =
const_cast<stGUILD_MEMBER_INFO *>(&rGuildMembers[i]);
assert (pMember);
//군단에 따른 필터링
if( pMember->m_byCorpsNum != m_iCurSelCorps)
continue;
// 스크롤 시작위치에 따른 스킵처리
iAllCorpMemberIndex++;
if( iAllCorpMemberIndex <= iStartIndex)
continue;
Ypos = insertCount;
insertCount++;
if (insertCount > m_MaxPage)
break;
Xpos1 = rc_listctrl.left;
if(pMember->m_byChaoState==eCHAO_STATE_PREV_CHAO)
dwNameColor = WzColor_RGBA (255, 128, 0, 255);
else if(pMember->m_byChaoState==eCHAO_STATE_CHAO)
dwNameColor = WzColor_RGBA (255, 0, 0, 255);
else
dwNameColor = WzColor_RGBA (255, 255, 255, 255);
if(!pMember->m_bLogin) // 접속 여부에 따른 색상 적용
{
dwNameColor = WzColor_RGBA (128, 128, 128, 255); // 접속안함 : 회색
}
// 길드원 이름, 레벨, 직업, 접속 여부
// 길드원 이름
Xpos2 = Xpos1 + m_pSortName->GetSize().right;
#ifdef _INTERNATIONAL_UI
Xpos2-=7;
#endif//_INTERNATIONAL_UI
SetRect(&rc, Xpos1, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap),
Xpos2, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap) + c_iHEIGHT_Gap);
//Todo:카오 속성 받아서 색상 다르게 출력 -지완
Sprintf (szMessage, _T("%s"),pMember->m_tszCharName);
this->GetDrawBase()->x_pManagerTextOut->DrawText(szMessage,&rc,
dwNameColor,WzColor_RGBA( 0, 0, 0, 0), TP_HCENTER );//TP_HLEFT);
// 레벨
Xpos1 = Xpos2;
Xpos2 = Xpos1 + m_pSortLevel->GetSize().right;
SetRect(&rc, Xpos1, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap),
Xpos2, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap) + c_iHEIGHT_Gap);
Sprintf (szMessage, _T("%d"), pMember->m_Level);
this->GetDrawBase()->x_pManagerTextOut->DrawText(szMessage,
&rc,
dwNameColor,
WzColor_RGBA( 0, 0, 0, 0),
TP_HCENTER);
// 직업
Xpos1 = Xpos2;
Xpos2 = Xpos1 + m_pSortClass->GetSize().right;
SetRect( &rc, Xpos1, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap),
Xpos2, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap) + c_iHEIGHT_Gap );
if (pMember->m_byClass > 5 || (pMember->m_byClass < 0) )
{
Sprintf (szMessage, _T("??"));
}
else
{
Snprintf(szMessage, INTERFACE_STRING_LENGTH, _T("%s"),
GlobalFunc::GetClassString(static_cast<eCHAR_TYPE>(pMember->m_byClass)));
}
this->GetDrawBase()->x_pManagerTextOut->DrawText(szMessage,
&rc, dwNameColor, WzColor_RGBA( 0, 0, 0, 0), TP_HCENTER);
//직책
Xpos1 = Xpos2;
Xpos2 = Xpos1 + m_pSortDuty->GetSize().right;
SetRect(&rc, Xpos1, rc_listctrl.top + (Ypos * c_iHEIGHT_Gap),
Xpos2, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap) + c_iHEIGHT_Gap);
GUILD_DUTY_USE_INFO * pGuildUseInfo = GuildRankInfoParser::Instance()->GetGuildDutyUseInfo(
GetManager()->GetGuildInfo().m_GuildGrade , pMember->m_eGuildDuty);
if( pGuildUseInfo )
{
g_InterfaceManager.GetInterfaceString(pGuildUseInfo->m_dwStringCode , szMessage ,INTERFACE_STRING_LENGTH);
this->GetDrawBase()->x_pManagerTextOut->DrawText(szMessage,
&rc, dwNameColor, WzColor_RGBA( 0, 0, 0, 0),TP_HCENTER);
}
// 접속중 / 접속안함
Xpos1 = Xpos2;
Xpos2 = Xpos1 + m_pSortConnect->GetSize().right;
SetRect(&rc, Xpos1, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap),
Xpos2, rc_listctrl.top + (Ypos*c_iHEIGHT_Gap) + c_iHEIGHT_Gap);
if( pMember->m_bLogin )
{
g_InterfaceManager.GetInterfaceString( eST_CONNECTING, szMessage, INTERFACE_STRING_LENGTH );
}
else
{
g_InterfaceManager.GetInterfaceString( eST_NOT_CONNECTING, szMessage, INTERFACE_STRING_LENGTH );
}
this->GetDrawBase()->x_pManagerTextOut->DrawText(szMessage,
&rc, dwNameColor, WzColor_RGBA( 0, 0, 0, 0), TP_HCENTER);
}
if( m_pListCorps->GetState() == WZ_SHOW)
{
m_pListCorps->OnDraw(TRUE); // <- 리스트 창 아래에 글씨가 보이므로 리스트를 한번더 그려주자!
}
int iTotalCorpsMemberNum = 0;
int iCorpsOnlineMemberNum = 0;
for( size_t i =0; i < rGuildMembers.size(); ++i)
{
if( rGuildMembers[i].m_byCorpsNum == m_iCurSelCorps )
{
iTotalCorpsMemberNum++;
if( rGuildMembers[i].m_bLogin)
iCorpsOnlineMemberNum++;
}
}
Snprintf(szMessage, INTERFACE_STRING_LENGTH -1, _T("(%d /%d)"), iCorpsOnlineMemberNum , iTotalCorpsMemberNum );
GlobalFunc::SetCaption(m_pStaticNumGuildMember, szMessage);
}
void uiGuildMain::OnClickDutyVest()
{
if( !GetManager() || !g_pHero)
return;
stGUILD_MEMBER_INFO * member = GetSelectedPacketForGuildMember();
const stGUILD_MEMBER_INFO * pHeroMemberInfo = GetManager()->GetGuildMemberInfo(g_pHero->GetName());
if( member && pHeroMemberInfo )
{
if( StrnCmp(member->m_tszCharName , g_pHero->GetName(), MAX_CHARNAME_LENGTH) == 0 )
{
//5197 자신에게는 이용할수 없는 기능입니다.
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(5197));
return;
}
bool bHeroHighDuty = (member->m_eGuildDuty - pHeroMemberInfo->m_eGuildDuty > 0) && pHeroMemberInfo->m_eGuildDuty != 0;
if( bHeroHighDuty ) //Hero가 직책이 더 높다
{
uiGuildDutyVest * pDutyVest = GET_CAST_DIALOG( uiGuildDutyVest, IM_GUILD_MANAGER::GUILD_DUTY_VEST );
if( pDutyVest )
{
pDutyVest->SetTargetName(member->m_tszCharName);
pDutyVest->ShowInterface(TRUE);
}
}
else
{
//6195 상위 직책에 있는 길드원에게는 직책을 부여할 수 없습니다.
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(6195) );
return;
}
}
}
void uiGuildMain::OnClickRightDelegation()
{
if( !GetManager() || !g_pHero)
return;
const stGUILD_MEMBER_INFO * pHeroMemberInfo = GetManager()->GetGuildMemberInfo(g_pHero->GetName());
stGUILD_MEMBER_INFO * member = GetSelectedPacketForGuildMember();
if( member && pHeroMemberInfo)
{
if( StrnCmp(member->m_tszCharName , g_pHero->GetName(), MAX_CHARNAME_LENGTH) == 0 )
{
//5197 자신에게는 이용할수 없는 기능입니다.
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(5197));
return;
}
bool bGuildMaster = pHeroMemberInfo->m_eGuildDuty == eGUILD_DUTY_MASTER;
if( ! bGuildMaster)
{
//6221 길드장만 사용 가능한 기능입니다.
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(6221));
return;
}
bool bTargetAvalible = (member->m_eGuildDuty == eGUILD_DUTY_SUBMASTER || member->m_eGuildDuty == eGUILD_DUTY_STRATEGIST);
if( !bTargetAvalible)
{
//6197 서브 마스터,군사에게만 권한을 위임할수 있습니다.
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(6197));
return;
}
MSG_CG_GUILD_RIGHT_DELEGATION_LIST_SYN SendPacket;
Snprintf(SendPacket.m_szTargetCharName , MAX_CHARNAME_LENGTH , member->m_tszCharName);
GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendPacket, sizeof(SendPacket));
}
}
void uiGuildMain::OnClickGuildMasterDelegation()
{
if( !GetManager() || !g_pHero)
return;
const stGUILD_MEMBER_INFO * pHeroMemberInfo = GetManager()->GetGuildMemberInfo(g_pHero->GetName());
stGUILD_MEMBER_INFO * member = GetSelectedPacketForGuildMember();
if( member && pHeroMemberInfo)
{
if( StrnCmp(member->m_tszCharName , g_pHero->GetName(), MAX_CHARNAME_LENGTH) == 0 )
{
//5197 자신에게는 이용할수 없는 기능입니다.
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(5197));
return;
}
uiSystemMan * pSystemMan = (uiSystemMan *)g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM);
if(pSystemMan)
{
m_strAttemptChageMasterName = member->m_tszCharName;
TCHAR szMessage[INTERFACE_STRING_LENGTH] ={0,};
Snprintf(szMessage, INTERFACE_STRING_LENGTH -1,g_InterfaceManager.GetInterfaceString(6214), member->m_tszCharName);
//6214 길드장이 1번 변경하면 14일간 길드장 위임이 가능하지 않습니다. \n%s님으로 길드장 위임을 하시겠습니까?
pSystemMan->Sys_ConfirmLock(szMessage, fnGuildMasterDelegation);
}
}
}
void uiGuildMain::OpenGuildNotice()
{
uiGuildMan* pGuildMan = GET_DIALOG_MANAGER( uiGuildMan, UIMAN_GUILD );
if(!g_pHero || !pGuildMan) return;
//1.자신의 길드정보얻기
stGUILD_MEMBER_INFO * pHeroInfo = pGuildMan->GetGuildMemberInfo(g_pHero->GetName());
if(!pHeroInfo)
return;
//2.공지권한이 있는지 체크
BOOL bRightNotice = FALSE;
if ((GuildRightInfoParser::Instance()->CheckDutyForRight(eGUILD_RIGHTS_NOTICE, pHeroInfo->m_eGuildDuty) == TRUE) &&
(GuildRightInfoParser::Instance()->CheckGradeForRight(eGUILD_RIGHTS_NOTICE, GetManager()->GetGuildInfo().m_GuildGrade) == TRUE))
{
bRightNotice = TRUE;
}
if(bRightNotice)
{
uiBase * pGuildNotice = GET_DIALOG( IM_GUILD_MANAGER::GUILD_NOTICE );
if(pGuildNotice)
{
//2_1:권한이있다면 공지창열어주기
pGuildNotice->ShowInterface(TRUE);
}
}
else
{
//2_2:권한이없다면 메시지출력
//7206 길드등급 레벨이 낮거나,공지 변경 권한이 없습니다
TCHAR szMessage[INTERFACE_STRING_LENGTH + 1] ={0,};
g_InterfaceManager.GetInterfaceString(7206, szMessage);
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, szMessage);
}
}
void uiGuildMain::OnClickGuildMemberRightInfo()
{
stGUILD_MEMBER_INFO * pMember = GetSelectedPacketForGuildMember();
if( pMember )
{
if( pMember->m_eGuildDuty == eGUILD_DUTY_SUBMASTER ||
pMember->m_eGuildDuty == eGUILD_DUTY_STRATEGIST)
{
//
m_bClickMemberRightInfoButton = true;
MSG_CG_GUILD_RIGHT_DELEGATION_LIST_SYN SendPacket;
Snprintf(SendPacket.m_szTargetCharName , MAX_CHARNAME_LENGTH , pMember->m_tszCharName);
GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendPacket, sizeof(SendPacket));
}
else
{
//TO Do: uiGuildMeberRightView 다이얼로그 띄우기
uiGuildMemberRightView * pGuildMemberRightVew = GET_CAST_DIALOG( uiGuildMemberRightView, IM_GUILD_MANAGER::GUILD_MEMBER_RIGHT_VIEW );
if( pGuildMemberRightVew )
{
pGuildMemberRightVew->ShowInterface(TRUE);
pGuildMemberRightVew->RegisteAllItem(pMember, NULL);
}
}
}
}
//현재 선택된 길드 멤버를 반환 한다.
stGUILD_MEMBER_INFO * uiGuildMain::GetSelectedPacketForGuildMember()
{
if( !GetManager())
return NULL;
int cursel = this->m_pLstControl->GetCurSel();
if( cursel >= 0)
{
int start = this->m_pScrollControl->GetScrollPosWZ();
int iIndex = start + cursel;
VEC_GUILD_MEMBER & rGuildMembers = const_cast<VEC_GUILD_MEMBER &>(GetManager()->GetGuildMembers());
int RealCount = 0;
int FilterCount = 0;
for( size_t i = 0; i < rGuildMembers.size();i ++)
{
// 현재 선택된 군단과 일치하는 맴버만 검사한다.
if( rGuildMembers[i].m_byCorpsNum == m_iCurSelCorps)
{
if( FilterCount == iIndex)
{
return &rGuildMembers[RealCount];
}
FilterCount++;
}
RealCount++;
}
}
return NULL;
}
void uiGuildMain::OnClickGuildCropChange()
{
if( !GetManager())
return;
stGUILD_MEMBER_INFO * pMember = GetSelectedPacketForGuildMember();
if( !pMember)
return;
VEC_GUILD_MEMBER & rGuildMembers = const_cast<VEC_GUILD_MEMBER &>(GetManager()->GetGuildMembers());
//TODO: pMember Name 및 bStateCorps 를 UI에 셋팅.
uiGuildCorpsChange * pGuildCorpsChange = GET_CAST_DIALOG( uiGuildCorpsChange, IM_GUILD_MANAGER::GUILD_CORPS_CHANGE );
if( !pGuildCorpsChange )
return;
pGuildCorpsChange->InitAllCheckButton();
int index = 0;
for( int i =0; i< MAX_GUILD_CORPS_NUM; ++i)
{
if( GetManager()->GetCorpsTotalInfo().m_CorpsInfo[i].m_bCreate)
{
if( pMember->m_byCorpsNum != i)
{
pGuildCorpsChange->ShowAndInsertCheckCorps(index, i);
index++;
}
}
}
if( index == 0 )
{
//6259 이동할 군단이 존재하지 않습니다.
GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(6259));
return;
}
pGuildCorpsChange->SetTargetName(pMember->m_tszCharName);
pGuildCorpsChange->ShowInterface(TRUE);
}
void uiGuildMain::InsertAllCorps()
{
if( !GetManager() )
return;
const VEC_GUILD_MEMBER & rGuildMembers = GetManager()->GetGuildMembers();
// 효율을 위해 군단장 인덱스를 배열로 가지고 있는다.
int arrIndexCorpMaster[MAX_GUILD_CORPS_NUM];
memset(arrIndexCorpMaster,-1,sizeof(arrIndexCorpMaster));
for( size_t i = 0; i < rGuildMembers.size(); ++i )
{
const stGUILD_MEMBER_INFO * pMember =&rGuildMembers[i];
if( pMember )
{
if( pMember->m_byCorpsNum >= 0 && pMember->m_byCorpsNum < MAX_GUILD_CORPS_NUM)
{
//군단장 인가?
if( pMember->m_eGuildDuty == eGUILD_DUTY_COMMANDER || pMember->m_eGuildDuty == eGUILD_DUTY_MASTER)
{
arrIndexCorpMaster[pMember->m_byCorpsNum] = i;
}
}
}
}
GUILD_CORPS_TOTAL_INFO & rCorpsTotalInfo = (GUILD_CORPS_TOTAL_INFO &)GetManager()->GetCorpsTotalInfo();
m_pListCorps->DeleteItemAll();
for( int i =0; i < MAX_GUILD_CORPS_NUM; ++i)
{
//군단이 창설되어있다
if( rCorpsTotalInfo.m_CorpsInfo[i].m_bCreate)
{
TCHAR szMessage[INTERFACE_STRING_LENGTH] ={0,};
//위에서 군단장 인덱스 배열을 만든걸 바로 가져다 쓴다.
int iCorpsMasterIndex = arrIndexCorpMaster[i];
if( iCorpsMasterIndex >= 0) // 군단장이 있다
{
const stGUILD_MEMBER_INFO * pMember = &rGuildMembers[iCorpsMasterIndex];
if( pMember )
{
//1269 %s 군단 : %s
TCHAR szTemp[INTERFACE_STRING_LENGTH] ={0,};
g_InterfaceManager.GetInterfaceString(1269, szTemp);
Snprintf(szMessage, INTERFACE_STRING_LENGTH -1, szTemp, GlobalFunc::GetCorpsName(i), pMember->m_tszCharName);
}
}
else // 군단장이 공석이다.
{
//6285 %s 군단
Snprintf(szMessage, INTERFACE_STRING_LENGTH -1, g_InterfaceManager.GetInterfaceString(6285) , GlobalFunc::GetCorpsName(i) );
}
if( rCorpsTotalInfo.m_CorpsInfo[i].m_bRearCamp)
{
//1093 (육성캠프존재)
_tcscat(szMessage, g_InterfaceManager.GetInterfaceString(1093));
}
int ipushIndex = m_pListCorps->InsertItemBack();
#ifdef _INTERNATIONAL_UI
GlobalFunc::SetItem(m_pListCorps, ipushIndex, 0, szMessage,StrToWzID("st10"), DT_LEFT,
c_InterfaceBKColor,c_InterfaceTextColor,c_InterfaceSelColor);
#else
GlobalFunc::SetItem(m_pListCorps, ipushIndex, 0, szMessage,StrToWzID("mn12"), DT_LEFT,
c_InterfaceBKColor,c_InterfaceTextColor,c_InterfaceSelColor);
#endif//_INTERNATIONAL_UI
m_pListCorps->SetItemData(ipushIndex, &rCorpsTotalInfo.m_CorpsInfo[i].m_byCorpsNum);
}
}
}
void uiGuildMain::SetListCaption()
{
if (IsVisible() == FALSE)
{
return;
}
if( !GetManager())
return;
if( m_iCurSelCorps >= MAX_GUILD_CORPS_NUM)
return;
TCHAR szMessage[INTERFACE_STRING_LENGTH] ={0,};
VEC_GUILD_MEMBER & rGuildMember = const_cast< VEC_GUILD_MEMBER &> (GetManager()->GetGuildMembers());
GUILD_CORPS_TOTAL_INFO & rCorpsTotalInfo = (GUILD_CORPS_TOTAL_INFO &)GetManager()->GetCorpsTotalInfo();
if( rCorpsTotalInfo.m_CorpsInfo[m_iCurSelCorps].m_bCreate )
{
//6285 %s 군단
Snprintf(szMessage,INTERFACE_STRING_LENGTH-1, g_InterfaceManager.GetInterfaceString(6285), GlobalFunc::GetCorpsName(m_iCurSelCorps));
for( size_t i = 0; i < rGuildMember.size(); ++i )
{
stGUILD_MEMBER_INFO* pMember =
static_cast<stGUILD_MEMBER_INFO *>(&rGuildMember[i]);
if( pMember )
{
if( pMember->m_byCorpsNum == m_iCurSelCorps)
{
//군단장 인가?
if( pMember->m_eGuildDuty == eGUILD_DUTY_COMMANDER || pMember->m_eGuildDuty == eGUILD_DUTY_MASTER)
{
//1269 %s 군단 : %s
TCHAR szTemp[INTERFACE_STRING_LENGTH] ={0,};
g_InterfaceManager.GetInterfaceString(1269, szTemp);
Snprintf(szMessage, INTERFACE_STRING_LENGTH -1, szTemp, GlobalFunc::GetCorpsName(m_iCurSelCorps),
pMember->m_tszCharName);
if( GetManager()->GetCorpsTotalInfo().m_CorpsInfo[m_iCurSelCorps].m_bRearCamp )
{
////1093 (육성캠프존재)
_tcscat(szMessage, g_InterfaceManager.GetInterfaceString(1093));
}
GlobalFunc::SetCaption(m_pCaptinCurSel,szMessage);
return;
}
}
}
}
if( GetManager()->GetCorpsTotalInfo().m_CorpsInfo[m_iCurSelCorps].m_bRearCamp )
{
////1093 (육성캠프존재)
_tcscat(szMessage, g_InterfaceManager.GetInterfaceString(1093));
}
}
GlobalFunc::SetCaption(m_pCaptinCurSel,szMessage);
}
void uiGuildMain::updateMouseWheel()
{
if( !m_pLstControl || !m_pScrollControl)
return;
RECT rc = m_pLstControl->GetSizeRect();
switch (GetMouseWheelStatus(&rc))
{
default:
break;
case MOUSE_WHEEL_UP:
{
int iMin = 0 , iMax = 0;
m_pScrollControl->GetScrollRangeWZ( &iMin, &iMax);
int iCurPos = m_pScrollControl->GetScrollPosWZ();
if( iMin < iCurPos )
{
iCurPos--;
m_pScrollControl->SetScrollPosWZ(iCurPos);
}
}
break;
case MOUSE_WHEEL_DOWN:
{
int iMin = 0 , iMax = 0;
m_pScrollControl->GetScrollRangeWZ( &iMin, &iMax);
int iCurPos = m_pScrollControl->GetScrollPosWZ();
if( iCurPos < iMax )
{
iCurPos++;
m_pScrollControl->SetScrollPosWZ(iCurPos);
}
}
break;
}
}
//------------------------------------------------------------------------------
stGUILD_MEMBER_INFO* uiGuildMain::GetMemberInfo_byListboxCurSel()
{
if ((m_pLstControl == NULL) ||
(m_pScrollControl == NULL))
{
return NULL;
}
int select_index = m_pLstControl->GetCurSel();
int scroll_start_index = m_pScrollControl->GetScrollPosWZ();
int display_member_count = 0;
int corp_member_count = 0;
const VEC_GUILD_MEMBER& rGuildMembers = GetManager()->GetGuildMembers();
for (int i = 0; i < (int)rGuildMembers.size(); ++i)
{
stGUILD_MEMBER_INFO* member_info = const_cast<stGUILD_MEMBER_INFO *>(&rGuildMembers[i]);
//군단에 따른 필터링
if (member_info->m_byCorpsNum != m_iCurSelCorps)
{
continue;
}
++corp_member_count;
//! 스크롤 시작위치에 따른 스킵처리
if (corp_member_count <= scroll_start_index)
{
continue;
}
if (select_index == display_member_count)
{
return member_info;
}
++display_member_count;
}
return NULL;
}
#endif //_NA_003923_20120217_GUILD_RENEWAL_UI_GUILD_MANAGER
//------------------------------------------------------------------------------
// EOF
//------------------------------------------------------------------------------