Files
Leviathan/Client/Game/game/Interface/Skill/SUISkillWnd.h
T
2026-06-01 12:46:52 +02:00

176 lines
5.2 KiB
C++

/// 2010.12.17 - prodongi
#pragma once
//#include "SUIWnd.h"
#include "SUIDefine.h"
#include "SSkillSlot.h"
/// 2010.12.02 - prodongi
#include "SUIAniJobLevelUpWnd.h"
class SUIDisplayInfo;
class KUIControlCheck;
namespace
{
enum{
JOP_0 = 0,
JOP_1,
JOP_2,
JOP_3, /// 2010.12.17 - prodongi
JOP_ALL,
JOP_TP, /// 2011.03.28 특성 스킬 - PRODONGI
JOP_CNT
};
};
class SUISkillWnd : public SUIWnd
{
public:
SUISkillWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo )
: SUIWnd( pGameManager ), m_pDisplayInfo( pDisplayInfo ), m_nSelectJopIndex(JOP_ALL), m_nScrollPos(0), m_nJopRank(-1)
{ }
virtual ~SUISkillWnd();
virtual void* Perform( KID id, KArg& msg );
virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam );
virtual bool InitControls( KPoint kPos );
virtual bool InitData( bool bReload = false );
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true );
virtual void Process(DWORD dwTime); /// 2010.12.17 - prodongi
bool CheckCurrentJobIndex() const
{
if( m_nSelectJopIndex < 0 || m_nSelectJopIndex >= JOP_CNT ) return false;
return true;
}
protected:
// SKILL_VECTOR m_vecActiveSkillList;
// SKILL_VECTOR m_vecPassiveSkillList;
SKILL_VECTOR m_vecActiveSkillList[JOP_CNT];
SKILL_VECTOR m_vecPassiveSkillList[JOP_CNT];
void _setSkillLevel( int nIndex, int nLevel, SSkillSlot* pSkill );
// 스킬 리스트 ==========================
void FreeSkillList ();
void RefreshSkillSlot ();
void RefreshAddedSkillList();
void UpdateSkillList();
void AddSkillList( SSkillSlot* pSlot );
void SetSkillData ( SSkillSlot* pSkill, int nIndex, bool bShow );
void EnableSlot ( int nMode = -1, bool bShow = false, bool bPassive = 1/*TAB_PASSIVE*/, int nSkillID = -1 );
void DisableSlot ( int nIndex );
void DisableAllSlot ( bool bShow = false );
void RefreshActiveSkillSlot ();
void RefreshPassiveSkillSlot();
bool IsExistSkill( int nSkillID, int nJopID );
bool IsExistSkill( int nSkillID, bool bActive );
int GetSkillID( int nIndex );
int GetSkillLevel( int nIndex );
/// 윈도우 ================================
void CreateControls ();
/// 잡레벨 ================================
void RequestJobLvUP ();
/// 스킬사용 ==============================
void RequestUseSkill();
void RequestUseSkill(int index);
void RequestUseSkill(char const* strID); /// 2010.12.20 - prodongi
/// 탭 ====================================
void SelectTab();
const int GetTabType () const { return m_nTabType; }
const bool IsActiveTab () const;
/// 스크롤바 ==============================
void RefreshScrollbar ();
void ResizeScrollbar ( int nOldHeight );
/// 직업 ==================================
void SetJP ();
void SetJName ();
void SetJLevel ();
void SetJLvHistory ();
void SetPrevJLevel ( int nLevel );
void SetCurJLevel ( int nLevel, __int64 nJP ); /// 2011.04.29 int->__int64 - prodongi
void SetNextJLevel ( int nLevel );
bool ShowCurJLevel ( std::string str, int nLevel );
bool ChangeJop();
int GetUserJopRank();
void SetControlEnable( const char * pControlName, bool bEnable );
void SetControlEnableColor( const char * pControlName, const char* lpColor, bool bEnable );
/// 선택바 ================================
void HideSelectBar ();
void ShowSelectBar ( int nIndex );
/// 스킬업/다운 ===========================
void SkillUp ( int nIndex );
void SkillDown ( int nIndex );
/// 드래그앤드랍 ==========================
const int GetSkillIDByCtrlName ( const char* szCtrlName ) const;
const int GetUseLevel ( int nSkillID ) const;
const int GetActiveSkillID ( const char* szCtrlName ) const;
const int GetPassiveSkillID ( const char* szCtrlName ) const;
/// 스킬 쿨링 타임 ==========================
void ShowClockBox( int nSkillID, bool bDiable = false );
void CancelSkill( int nSkillID );
/// 스킬 카드 ================================
const int GetCardSlotIndex( const char* szControl, bool bSend = false ) const;
void RequestEquipCard( int nIndex, AR_HANDLE hItem );
const bool IsSkillCard( int nIndex, AR_HANDLE hItem ) const;
const AR_HANDLE GetSkillCardItem( int nIndex ) const;
/// 2010.12.15 - prodongi
void toggleSkillTreeFundWnd();
void selectTabButton(int type);
void setSelectedSheetTabItem(int type);
void selectJobRankButton(int rank);
void refreshJobRank(); /// 2010.12.21 - prodongi
void addSkillList(bool isPassive, SSkillSlot* slot, int listIndex); /// 2011.03.28 - prodongi
void reorderSelectTabLayer(int type);/// 2010.12.22 탭 버튼과 탭 선택 컨트롤의 레이어 순서를 설정한다 - prodongi
private:
SUIDisplayInfo* m_pDisplayInfo;
int m_nSysMenuPosX; ///< 좌측 메뉴의 좌표
int m_nSysMenuPosY;
int m_nMaxLine; ///< 화면에 표시되는 라인 갯수
int m_nTabType;
int m_nSelSkillPos; ///< 선택한 스킬의 위치
int m_nScrollPos; ///< 스크롤 위치
bool m_bIsOpenSkillFund; ///< 스킬펄드 차일드 오픈 유무
bool m_bShowChildWnd;
int m_nChangeJob; ///< 전직 횟수
int m_nSelectJopIndex;
int m_nJopRank;
/// 2010.12.02 - prodongi
sAniJobLevelUp m_aniJobLevelUp;
DWORD m_lastTime;
KUIControlCheck* m_jobRankButton[JOP_CNT];
};