Files
2026-06-01 12:46:52 +02:00

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; // 공격대명.
};