120 lines
3.5 KiB
C++
120 lines
3.5 KiB
C++
|
|
#ifndef _SUIArenaResultWnd_h_
|
|
#define _SUIArenaResultWnd_h_
|
|
|
|
#include "Arena\\ArenaSystem.h"
|
|
#include "SGameMessage.h"
|
|
#include "ArenaUtility.h"
|
|
//#include "SUIWnd.h"
|
|
//#include "SUIUtil.h"
|
|
|
|
class SUIArenaResultWnd : public SUIWnd
|
|
{
|
|
private:
|
|
typedef SMSG_BATTLE_ARENA_RESULT::sMvp sMvp;
|
|
|
|
public:
|
|
SUIArenaResultWnd(SGameManager* pGameManager);
|
|
virtual ~SUIArenaResultWnd();
|
|
virtual bool InitData( bool reload = false );
|
|
virtual void OnNotifyUIWindowOpen(bool bOpen, bool bLimitWnd);
|
|
virtual void ProcMsgAtStatic( SGameMessage* msg );
|
|
virtual void PumpUpMessage( LPCTSTR controlID, DWORD msg, DWORD lparam, DWORD wparam );
|
|
|
|
private:
|
|
void initFp();
|
|
void initTooltip();
|
|
void initNeedResizeControls();
|
|
void addNeedResizeControl(char const* id);
|
|
/// 팀원 항목 생성
|
|
void createRowControls();
|
|
void copyRowControl(int panel);
|
|
void setWinTeam(int winTeam);
|
|
void syncPos();
|
|
void updateRow(int rowNum);
|
|
void updateTotalPlayerCount();
|
|
void showRow(int rowNum);
|
|
void resizeWnd(int rowNum);
|
|
void setRowNum(); /// 팀원 수 설정
|
|
/// 클래식/빙고/슬래터
|
|
void setGameMode();
|
|
/// 동맹군/마녀군
|
|
void setMyTeam(int teamType);
|
|
void setScore(int team, int score, char const* controlId);
|
|
void setMyScore(int score);
|
|
void setOpponentScore(int score);
|
|
/// 내 row는 배경을 바꿔준다.
|
|
void setRowBackground();
|
|
bool setRowData(sArenaSystem::sPlayerInfo* info, int panel, int row, int mvpCount, sMvp const* mvp);
|
|
/// 경기 진행중/끝 에 따라서 버튼의 show/hide 상태들을 바꿔준다
|
|
void setEndGame(bool end);
|
|
void updateData(int mvpCount = 0, sMvp const* mvp = NULL);
|
|
void updateRow();
|
|
bool findRowIndex(char const* playerName, int& team, int& rowIndex);
|
|
void moveWnd();
|
|
/// 플레이어 인덱스의 캡션과 aniName을 초기화 해준다
|
|
void initNumber();
|
|
void setPanelData(int team, int panel, int mvpCount, sMvp const* mvp);
|
|
void findMyRowIndex();
|
|
void isValidArenaJoinSituationAtResult(SGameMessage* msg);
|
|
bool isMvp(char const* name, int mvpCount, sMvp const* mvp) const;
|
|
/// control fp
|
|
void close();
|
|
void end();
|
|
/// msg fp
|
|
void procMsgData(SGameMessage* msg);
|
|
void procMsgBattleInfo(SGameMessage* msg);
|
|
void procMsgBattleScore(SGameMessage* msg);
|
|
void procMsgJoinBattle(SGameMessage* msg);
|
|
void procMsgReconnectBattle(SGameMessage* msg);
|
|
void procMsgResult(SGameMessage* msg);
|
|
void procMsgLeave(SGameMessage* msg);
|
|
|
|
private:
|
|
enum { ROW_HEIGHT = 23 }; /// 각 라인의 높이
|
|
enum { MAX_ROW = 16 }; /// 최대 팀원 수
|
|
enum { MY_PANEL, OPPONENT_PANEL, MAX_PANEL };
|
|
enum { COLUMN_BACKGROUND,
|
|
COLUMN_NUMBER,
|
|
COLUMN_JOB,
|
|
COLUMN_ID,
|
|
COLUMN_KILLCOUNT,
|
|
COLUMN_DEATHCOUNT,
|
|
COLUMN_PROPPOINT,
|
|
COLUMN_AP,
|
|
MAX_COLUMN,
|
|
};
|
|
/*
|
|
*/
|
|
struct sRowControls
|
|
{
|
|
void setShow(bool show, int beginColumn = COLUMN_BACKGROUND);
|
|
KUIControl* m_control[MAX_COLUMN];
|
|
};
|
|
/* row 개수가 바뀔 때, 크기가 변해야 되는 컨트롤들
|
|
*/
|
|
struct sNeedResizeControl
|
|
{
|
|
sNeedResizeControl(int height, KUIWnd* control)
|
|
{
|
|
m_oriHeight = height;
|
|
m_control = control;
|
|
}
|
|
int m_oriHeight; /// 원래의 높이 값
|
|
KUIWnd* m_control;
|
|
};
|
|
|
|
int m_rowNum; /// 현재의 팀원 수
|
|
sRowControls m_rowControl[MAX_PANEL][MAX_ROW];
|
|
cClassFuncP<SUIArenaResultWnd> m_controlFp;
|
|
cClassParamFuncP<SUIArenaResultWnd, SGameMessage*, int> m_msgFp;
|
|
std::list<sNeedResizeControl> m_needResizeControl;
|
|
int m_oriCloseButtonOffsetY; /// 윈도우를 기준으로한 버튼의 옵셋값
|
|
KUIControl* m_buttonClose;
|
|
int m_oriWndHeight; /// 윈도우의 원래 높이 값
|
|
int m_myRowIndex;
|
|
bool m_isEnd;
|
|
};
|
|
|
|
|
|
#endif |