#pragma once //#include "SUIWnd.h" // 2011. 10. 11 - marine enum ATTACK_UNIT{ ATTACK_UNIT_NOMAL_UI = 0, ATTACK_UNIT_MINI_UI = 1, MAXPARTYCOUNT = 8, NOMAL_UI_GAP = 23 }; // 2011. 10 .12 - marine enum BUTTON_STATE{ UP_BUTTON_STATE = 0, // 버튼 올라온 상태(해당버튼에 연결된 버튼창 닫힘상태) DOWN_BTN_STATE = 1, // 버튼 눌림 상태(해당버튼에 연결된 버튼창 열림상태) STATE_TOTAL = 2 }; //// 2011. 10. 10 - marine 공격대 파티 정보 구조체 //struct AttackPartyInfo //{ // AttackPartyInfo():strPartyName(""),nPartyID(0),nUserCnt(0),bIsButtonDown(ATTACK_UNIT_NOMAL_UI){}; // std::string strPartyName; // 파티 이름 // int nPartyID; // 파티 아이디 혹은 핸들.. // int nUserCnt; // 인원수 // bool bIsButtonDown; // 눌려졌나?(체크형식의 버튼임) //}; // //// 2011. 10. 10 - marine 공격대 파티 관리 클래스 //class CAttackUnitInfo //{ //private: // // std::vector m_AttackPartyList; // 파티 리스트 // std::string m_strAimDungeonName; // 목표 던전 이름 // //public: // CAttackUnitInfo(); // ~CAttackUnitInfo(); // //public: // // //void InitAttackUnit(std::string DungeonName, std::vector AttackPartyList); // 공대 초기화(공대창이 처음 열릴때 초기화한다..) // void AddParty(std::string strPartyName, int nUserCount, int nPartyID); // 파티추가 // void ClearAttackUnit(); // 공대전체 클리어 // static CAttackUnitInfo& GetInstance(); // Get인스턴스 // std::vector GetPartyList(); // Get파티리스트 // const std::string& GetDungeonName() // 던전이름 얻기 // { return m_strAimDungeonName; }; //}; // //#define GetAttackUnitInfo() CAttackUnitInfo::GetInstance() class SUIDungeonUnitWnd : public SUIWnd { public: SUIDungeonUnitWnd( SGameManager* pGameManager ) : SUIWnd( pGameManager ),m_nCurPartyCount(0),m_bItsMeMaster(0), m_bIsFirstResize(true),m_nMyPartyNum(0),m_bIsInitAttackUnit(true),m_nPrePartyCount(0),m_nMaxPartyNum(0),m_nPreCount(ATTACK_UNIT::MAXPARTYCOUNT) { /// 2011.12.22 공대 리스트 창이 생성될 때, SIMSG_UI_DUNGEONUNIT_UPDATE에서 처리해 주기 때문에 /// 중복처리 되지 않기 위해서 여기서는 m_bIsInitAttackUnit를 true로 해준다 - prodongi for(int i = 0; i m_vecGroupList; protected: virtual bool InitControls( KPoint kPos ); virtual bool InitData( bool bReload = false ); virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ); virtual void ProcMsgAtStatic( SGameMessage* pMsg ); virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true ); public: void InitControl(void); void InitPartyControlPackage(); // 2011. 10. 11 - marine 공대파티의 정보(버튼2종,공대순번, 공대표식, 공대인원)컨트롤 초기화 void SetPartyButtonToggle(int nPartyNum, bool bCurButtonState ); // 2011. 10. 12 - marine 공대파티 버튼 토글.. void InitParty(int nPartyCount, int nMyPartNum); // 파티창이 열릴때 파티 구성 void SetShowParty(int nPartyNum,bool bShow); // 파티를 창을 보여줄지 말지 설정 void SetShowMyParty(int nMyPartyNum); // 자신의 파티 보이기 설정 void SetShowInviteControls(int nPartyCount, bool bShow); // 공대 초대 컨트롤들 보이기 설정 void SetResizeFrame(int nPartyCount); // 프레임 리사이즈 void AddParty(); // 파티 추가 void SetRaidInfo(); // m_RaidMgr에서 필요한 데이터를 셋팅한다.. void SaveButtonState(); // 버튼 상태 저장 void SetButtonStateAll(); // 버튼 상태 설정(모든파티) void SetButtonState(int nNumber); // 파티 버튼 상태 설정(각파티) void findSelectedSlotPartyName(int nNum, std::string&); // 선택된 슬롯에 해상하는 실제 파티이름을 찾아준다. int findSelectedSltotPartyNumber(std::string& strPartName); // 파티번호 찾아준다.. void SetMyPartyNum(); // 자신의 파티번호 설정 private: // 2011. 10. 12 - marine 공격대 파티 정보 표시 컨트롤들.... // 이동, 활성, 비활성화를 계속 해줘야 해서 컨트롤들의 포인터를 저장해 둔다. KPoint m_ptCheckButtonPos[MAXPARTYCOUNT]; // 공대 파티 버튼의 위치 저장 KUIControlButton* m_pPartyButton [MAXPARTYCOUNT][STATE_TOTAL]; // 파티 눌림, 올라옴 (버튼) KUIControlStatic* m_pPartyNumStatic[MAXPARTYCOUNT]; // 파티 번호(스태틱) KUIControlStatic* m_pPartyMarkStatic[MAXPARTYCOUNT]; // 파티 마크(스태틱) KUIControlStatic* m_pPartyName[MAXPARTYCOUNT]; // 파티 이름(스태틱) KUIControlStatic* m_pPartyUserCount[MAXPARTYCOUNT]; // 파티 참가 인원수(스태틱) KUIControlStatic* m_pMyPartyStatic; // 자신의 공대(스태틱) KUIControlButton* m_pInvitePartyButton; // 공대 초대(버튼) KUIControlStatic* m_pInvitePartyStatic[2]; // 공대 초대 스태틱 KUIControlStatic* m_pMyPartyMark; // 내 파티 마크 int m_nCurPartyCount; // 현재파티수 int m_nPrePartyCount; // 이전의 파티수 bool m_bItsMeMaster; // 내가 공대장인가? bool m_bIsFirstResize; // 창의 리사이즈가 처음인가? bool m_bIsInitAttackUnit; // 초기화가 됐나 확인 std::string m_strDungeonName; // 던전 이름 int m_nMyPartyNum; // UI상 내 파티의 번호 int m_nMaxPartyNum; // 참여 가능한 최대 파티의 수 int m_nPreCount; // 창 조절을 위한 변수 }; class SUIDungeonUnitMiniWnd : public SUIWnd { public: SUIDungeonUnitMiniWnd( SGameManager* pGameManager ) : SUIWnd( pGameManager ),m_bIsFirstResize(true),m_bIsMouseOver(false),m_bIsInitAttackUnit(false), m_nMyPartyNum(0),m_bItsMeMaster(false),m_nPrePartyCount(0),m_nMaxPartyNum(0),m_nPreCount(ATTACK_UNIT::MAXPARTYCOUNT), m_nFaidFlag(FAID_INOUT::FAID_NONE), m_fAlpha(0.0f), m_lastTime(0){}; virtual ~SUIDungeonUnitMiniWnd(); // std::vector m_vecGroupList; protected: virtual bool InitControls( KPoint kPos ); virtual bool InitData( bool bReload = false ); virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ); virtual void ProcMsgAtStatic( SGameMessage* pMsg ); virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true ); virtual void Process(DWORD dwTime); public: void InitControl(); void InitAttackPartyData(){}; // 공대파티 정보 초기화(창이 전환될 때마다 해줘야 한다.) void InitPartyControlPackage(); // 2011. 10. 14 - marine 공대파티의 정보(버튼2종,공대순번, 공대표식, 공대인원)컨트롤 초기화 void SetPartyButtonToggle(int nPartyNum, bool bCurButtonState );// 버튼 토글 void SetShowInviteControls(int nPartyCount, bool bShow ); // 초대 버튼 활성/비활성 void InitParty(int nPartyCount, int nMyPartNum); // 공대 창 파티들 초기화 void SetShowParty(int nPartyNum,bool bShow); // 공대 파티 보이기/안보이기 void SetShowMyParty(); // 내 공대 파티 보이기/안보이기 void SetResizeFrame(int nPartyCount); // 공대창 리사이즈 void AddParty(); // 공대 추가 void SetMouseOver(bool bIsMouseOver); // 마우스 오버 상태인지 아닌지 판단해서.. void SetRaidInfo(); // m_RaidMgr에서 필요한 데이터를 셋팅한다.. void SaveButtonState(); // 버튼 상태 저장 void SetButtonStateAll(); // 버튼 상태 설정( 전부) void SetButtonState(int nNumber); // 버튼 상태 설정( 각파티별로 ) void SetToolTip(); // 툴팁 설정 void FaidInOutProcess(DWORD dwTime); // 페이드 인,아웃 처리 프로세스 void SetFaidCtrlAlpha(float fScale); // 알파값 설정 void findSelectedSlotPartyName( int nNum, std::string &strName ); // 선택된 슬롯에 해상하는 실제 파티이름을 찾아준다. int findSelectedSltotPartyNumber( std::string &PartyName ); // 파티번호 찾아준다.. void SetMyPartyNum(); private: enum PARTYNUM { H_NUM = 2, // 공대버튼 세로 갯수 V_NUM = 4, // 공대버튼 가로 갯수 TOTAL_NUM = H_NUM*V_NUM, // 공대버튼 총 갯수 H_SIZE = 44, // 세로 한칸 크기 V_SIZE = 25, // 가로 한칸 크기 MOUSEOVER_CTRL = 5 // 마우스 오버 언오버에 따라 show/unshow 되는 컨트롤 수 }; enum FAID_INOUT { FAID_IN = 0, FAID_OUT = 1, FAID_NONE = 2, }; KUIControlButton* m_pPartyButton [MAXPARTYCOUNT][STATE_TOTAL]; // 파티 눌림, 올라옴 (버튼) KUIControlStatic* m_pPartyNumStatic[MAXPARTYCOUNT]; // 파티 번호(스태틱) KUIControlStatic* m_pPartyMarkStatic[MAXPARTYCOUNT]; // 파티 마크(스태틱) KUIControlStatic* m_pMyPartyStatic; // 자신의 공대(스태틱) KUIControlButton* m_pInvitePartyButton; // 공대 초대(버튼) KUIControlStatic* m_pInvitePartyStatic; // 공대 초대 스태틱 KUIControlStatic* m_pMouseOverShow[MOUSEOVER_CTRL]; // 마우스 오버/ 언오버에 따라 show/unshow되는 컨트롤들.. KUIControlStatic* m_pMyPartyMark; // 내 파티 마크 std::string m_strToolTip[MAXPARTYCOUNT]; // 툴팁스트링 int m_nCurPartyCount; // 현재파티수 int m_nPrePartyCount; // 이전의 파티수 int m_nMyPartyNum; // 내 파티 번호 bool m_bItsMeMaster; // 내가 공대장인가? bool m_bIsFirstResize; // 창의 리사이즈가 처음인가? std::string m_strDungeonName; // 던전 이름 KPoint m_ptMousePos; // 마우스 위치 저장.. bool m_bIsMouseOver; // 미니창 마우스 오버 상태 bool m_bIsInitAttackUnit; // 공대초기화는 한번만.. int m_nMaxPartyNum; // 참여 가능한 최대 파티의 수 int m_nPreCount; // 창 조절을 위한 변수 int m_nFaidFlag; // 페이드 인아웃을 위한 플래그 float m_fAlpha; // 페이드 인아웃시에 사용될 알파값 DWORD m_lastTime; }; class SUIDungeonUnitInvitation : public SUIWnd { public: SUIDungeonUnitInvitation( SGameManager* pGameManager ): SUIWnd( pGameManager ), m_EditName(NULL){}; virtual ~SUIDungeonUnitInvitation(); protected: virtual bool InitControls( KPoint kPos ); virtual bool InitData( bool bReload = false ); virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ); virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true ); virtual DWORD OnMouseMessage(DWORD dwMessage, int x, int y); virtual void ProcMsgAtStatic( SGameMessage* pMsg ); private: class KUIControlEdit * m_EditName; // 공격대명. };