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