/// 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]; };