226 lines
11 KiB
C++
226 lines
11 KiB
C++
|
|
#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<AttackPartyInfo*> m_AttackPartyList; // 파티 리스트
|
|
// std::string m_strAimDungeonName; // 목표 던전 이름
|
|
//
|
|
//public:
|
|
// CAttackUnitInfo();
|
|
// ~CAttackUnitInfo();
|
|
//
|
|
//public:
|
|
//
|
|
// //void InitAttackUnit(std::string DungeonName, std::vector<AttackPartyInfo> AttackPartyList); // 공대 초기화(공대창이 처음 열릴때 초기화한다..)
|
|
// void AddParty(std::string strPartyName, int nUserCount, int nPartyID); // 파티추가
|
|
// void ClearAttackUnit(); // 공대전체 클리어
|
|
// static CAttackUnitInfo& GetInstance(); // Get인스턴스
|
|
// std::vector<AttackPartyInfo*> 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<ATTACK_UNIT::MAXPARTYCOUNT ; ++i)
|
|
{
|
|
m_ptCheckButtonPos[i].x = 0;
|
|
m_ptCheckButtonPos[i].y = 0;
|
|
}
|
|
};
|
|
|
|
virtual ~SUIDungeonUnitWnd();
|
|
|
|
// std::vector<DungeonAttack> 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<DungeonAttack> 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; // 공격대명.
|
|
}; |