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

231 lines
7.0 KiB
C++

#pragma once
//#include "SUIWnd.h" // UI 공통 클래스
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
//
// class SUIGuildMemberTab
//
// 길드원들의 정보를 리스트로 표현한다.
//
//
//---------------------------------------------------------------------------------------------
class KUIListItem;
class KUIListControl;
// Guild 창
#define MAX_BTN_SORT_STATE 4 // 정렬상태 3가지.
#define MAX_BTN_SORT_STATE_SIZE 5 // 정렬상태를 가지는 버튼 4개.
#define MAX_LIST_COUNT 14
class SUIGuildMemberTab : public SUIWnd
{
protected:
//-----------------------------
// 2010.12.07. 길드정보 변경시 UI 갱신방식 => 길드윈도우 open 시 UI 갱신 으로 변경.
DWORD m_nRefresh; // 갱신조건.
bool m_bUIRefresh; // 길드윈도우 open 시에 UI를 갱신할지 여부.
int m_beforeGuildMember; // 이전 길드원수.
//-----------------------------
// 길드원목록.
KUIListControl * m_pListGuild;
// 관리모드시 셀렉트 표시용 컨트롤.
KUIWnd * m_pTabSelectControl;
KUIWnd * m_pSelectPosControl; // 셀렉트 위치좌표용 컨트롤.
bool m_bFirstOpen; // 최초 오픈.
bool m_bFirstDataMapping; // 최초 데이타 맵핑.
// 스크롤바.
// 2010.09.20 - prodongi
KUIControlVScrollEx* m_pScrollBar;
//KUIControlVScroll* m_pScrollBar;
int m_nPrevScrollPos; // 이전 스크롤값.
int m_nScrollPos; // scroll bar의 변경 정보.
bool m_bExtendAll; // 전체 아이템 확장여부.
KUIWnd * m_pSelectedControl; // 선택된 아이템의 활성화 비쥬얼용 컨트롤.
KUIWnd * m_pSelectedControl_Red; // red.
KUIWnd * m_pSelectedControl_Orange; // orange.
// 정렬용 길드원 정보 배열.
KUIWnd * m_arrSortBtn[ MAX_BTN_SORT_STATE_SIZE ];
std::vector< SPlayerSlot * > m_arrMember;
int m_arrSortState[ MAX_BTN_SORT_STATE_SIZE ]; // 각버튼의 정렬상태. ( 0 비정렬, 1 내림차순, 2 오름차순 정렬 )
int m_nSortCondition; // 정렬조건. 0 온라인, 1 직업, 2 레벨, 3 아이디
//
// 맴버 팝업 관련.
class SUIMemberPopupWnd * m_pMemberPopupWnd; // 길드맴버팝업.
bool m_bOpenMemberPopup; // 맴버관련 팝업 오픈 여부.
KRect m_WndRect; // 자신의 Wnd 영역.
bool m_bManageMode; // 길드원 관리모드.
bool m_bMasterMode; // 길드마스터 모드.
public :
SUIGuildMemberTab( SGameManager * pGameManager );
bool isUIRefresh() const { return m_bUIRefresh; }
virtual ~SUIGuildMemberTab();
//------------------------------------------
//SUIWnd* CreateWnd( const char* szFile, KUIWndManager* pWndManager, KPoint kPos, int nWindowID );
virtual bool InitControls( KPoint kPos );
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam );
virtual DWORD OnMouseMessage(DWORD dwMessage, int x, int y);
virtual void ForcedProcess(DWORD dwTime); //강제 프로세스
virtual void PumpUpMsgDBClick( DWORD lparam ); // 2011. 10. 28 - marine 더블클릭
virtual void PumpUpMsgRBtnClick( DWORD lparam ); // 2011. 10. 28 - marine 우 클릭
virtual void PumpUpMsgLBtnClick_V( DWORD lparam ); // 2011. 10. 28 - marine 좌 클릭
void PumpUpMsgLBtnClick( DWORD lparam ); // 2011. 10. 28 - marine 좌 클릭
//------------------------------------------
void Release(); // 메모리 해제.
// 리스트아이템 확대,축소
void ListItemExtend( KUIControl * pButton, bool bExtension );
// ListControl 의 해당 아이템열의 각 컨트롤에 Player의 정보 맵핑
void DataMapping( KUIListItem * pItem, SPlayerSlot * pPlayer );
bool SelectedControl( KUIControl * pSelectionControl ); // 선택한 컨트롤의 활성화 비쥬얼 처리.
void RevitalizeSelectItem(); // 선택된 아이템 활성화 비쥬얼 처리.
// 멤버리스트 초기화.
void InitMemberList( unsigned int nUpdateState );
// 길드원 업데이트.
void UpdateGuildMember( unsigned int nUpdateState );
// 스크롤바 설정.
void RefreshScrollbar();
// 스크롤바 설정( 확장적용 ).
void RefreshScrollbarExtend();
// 길드원정보 갱신.
void RefreshListMember( int nScroll );
//
// 멤버관련 팝업.
void ShowMemberPopup( int x, int y, const char * strName );
// 선택된 인덱스의 길드원 명 반환.
const char * GetSelectedMemberName( int nRow );
// 메모뷰 오픈.
void ShowMemoView( KUIControl * pBaseControl, const std::string & strMemo );
// 길드원 관리 모드, 관리대상 길드원명 전송.
void MemberManageMode( const char * pStrName, const char * pStrClassName );
// 길드마스터 모드, 길드장인계 대상 길드원명 전송.
void GuildMasterMode( const char * pStrName, const char * pStrClassName );
// 관리모드시 셀렉트 표시.
void ShowSelectManageMode();
// 마스터모드시 셀렉트 표시.
void ShowSelectMasterMode();
// 버튼정렬상태 토글.
void ToggleBtnSortState( int index );
/*{
int num = m_arrSortState[ index ] + 1;
if( num >= MAX_BTN_SORT_STATE )
num = 0;
m_arrSortState[ index ] = num;
}*/
// 모든 버튼정렬상태 해제.
void ClearBtnSortStateAll();
// 버튼정렬상태 토글.
int GetToggleBtnSortState( int index ){
return m_arrSortState[ index ];
}
// 리스트 정렬.
void SortMemberList();
//void SortMemberList( KUIControl * pControl );
// 리스트 정렬. 맴버 Update.
void UpdateNSortMemberList();
// 권한처리.
void AuthorityProcess();
inline void EnableBtnCtrl( const char * pStr ); // 해당버튼 활성화.
inline void DisableBtnCtrl( const char * pStr );// 해당버튼 비활성화.
};
// 2011. 10. 26 - marine
// 길드UI의 길드원 탭의 내용을 상속받아서 사용
// 용도 : 공대관련 공대파티장초대, 공대파티원 초대에 사용 된다.
class SUIGuildMemberList :public SUIGuildMemberTab
{
public :
SUIGuildMemberList( SGameManager * pGameManager );
virtual ~SUIGuildMemberList();
virtual bool InitControls( KPoint kPos );
virtual void PumpUpMsgDBClick( DWORD lparam ); // 2011. 10. 28 - marine 더블클릭
virtual void PumpUpMsgRBtnClick( DWORD lparam ); // 2011. 10. 28 - marine 우 클릭
virtual void PumpUpMsgLBtnClick_V( DWORD lparam ); // 2011. 10. 28 - marine 좌 클릭
};
// 2011. 10 .26 - marine
// SUIGuildMemberList 의 겉껍데기..
class SUIGuildMemberListView : public SUIWnd
{
public:
SUIGuildMemberListView( SGameManager * pGameManager );
virtual ~SUIGuildMemberListView();
virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true );
virtual SUIWnd* CreateWnd( const char* szFile, KUIWndManager* pWndManager, KPoint kPos, int nWindowID );
virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam );
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
protected:
void updateGuildMemberList();
private:
KUIWnd *m_pMemberWnd;
std::string m_strSelectedName;
};