#pragma once //#include //#include "SUIWnd.h" #include "SUIDefine.h" using std::vector; class SSkillSlot; class SUIDisplayInfo; class SUICreatureSkillWnd : public SUIWnd { public: SUICreatureSkillWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo ) : SUIWnd( pGameManager ) , m_pDisplayInfo( pDisplayInfo ) , m_DragIndex(-1) , m_pOverBreed( NULL ) , m_pOverBreedIcon( NULL ) , m_pEvolutionRankIcon( NULL ) , m_strOverBreedPropertyTag( "" ) { } virtual ~SUICreatureSkillWnd(); virtual void* Perform( KID id, KArg& msg ); virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ); virtual bool InitControls( KPoint kPos ); virtual void ProcMsgAtStatic( SGameMessage* pMsg ); virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true ); virtual bool InitData( bool bReload = false ); public: vector m_vecActiveSkillList; vector m_vecPassiveSkillList; private: // 윈도우 ================================ ////////////////////////////// MJ void CreateTab(); void RefreshCreatureInfo(); // void RefreshCreatureQuickSlots(); // 2011.11.29 - servantes : 쓰이지 않음 void InitCreatureQuickSlots(); void CreateControls (); void _setSkillLevel( int nIndex, int nLevel, SSkillSlot* pSkill ); // 잡레벨 ================================ void RequestJobLvUP (); // 스킬사용 ============================== void RequestUseSkill (); // 탭 ==================================== void SelectTab(); bool IsActiveTab () const; // 스크롤바 ============================== void ResizeScrollbar ( int nOldHeight ); void RefreshScrollbar (); // 직업 ================================== void SetJP (); void SetJName (); void SetJLvHistory (); void SetPrevJLevel ( int nLevel ); void SetCurJLevel ( int nLevel, int nJP ); void SetNextJLevel ( int nLevel ); bool ShowCurJLevel ( string str, int nLevel ); // 스킬리스트 ============================ void FreeSkillList (); /// skill_list 로 온 데이터 갱신 void UpdateSkill ( class SSkillSlot* pSkill, bool bActive = true ); void RefreshSkillInfo (); void SetSkillData ( class SSkillSlot* pSkill, int nIndex, bool bShow ); int GetSkillID ( int nIndex ); bool IsExistSkill ( int nSkillID, bool bActive = true ); // 스킬슬롯 ============================== 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 ( int nRange ); void RefreshPassiveSkillSlot ( int nRange ); void RefreshSkillSlot ( int nRange = 0); void UpdateCreatureQuickSlots(); // 2010.07.15 - prodongi void RefreshAddedSkillList(); // 선택바 ================================ void HideSelectBar (); void ShowSelectBar ( int nIndex ); // 스킬업/다운 =========================== void SkillUp ( int nIndex ); void SkillDown ( int nIndex ); // 드래그앤드랍 ========================== int GetSkillIDByCtrlName ( const char* szCtrlName ) const; int GetUseLevel ( int nSkillID ) const; int GetActiveSkillID ( const char* szCtrlName ) const; int GetPassiveSkillID ( const char* szCtrlName ) const; struct QUICK_SKILL* GetQuickSkillDByCtrlName( const char* szCtrlName ) const; struct QUICK_SKILL* GetActiveQuickSkill( const char* szSprName ) const; // 스킬 쿨링 타임 ========================== void ShowClockBox( int nSkillID, bool bDiable = false ); void CancelSkill( int nSkillID ); // 퀵슬롯 int GetIndexByCtrlID( const char* szControlID ); private: SUIDisplayInfo* m_pDisplayInfo; bool m_bShowChildWnd; int m_nSysMenuPosX; // 좌측 메뉴의 좌표 int m_nSysMenuPosY; int m_nMaxLine; // 화면에 표시되는 라인 갯수 int m_nTabType; int m_nSelSkillPos; // 선택한 스킬의 위치 int m_nScrollPos; // 스크롤 위치 // 퀵슬롯 int m_DragIndex; KRect m_rtQuickSlotRect; // 장착 영역 KRect m_rtSlotRect; // 장착 해제 영역 bool m_bIsQuickSlotItem; // 장착한 스킬 KUIControlStatic* m_pOverBreed; // 오버 브리드 컨트롤 KUIControlStatic* m_pOverBreedIcon; // 오버 브리드 아이콘 KUIControlIconStatic* m_pEvolutionRankIcon; // 진화 등급 아이콘 string m_strOverBreedPropertyTag; // 오버브리드 속성 태그 ,.. }; //----------------------------------------------------------------------------------------------------------------- // 크리쳐 스킬 배우기 윈도우 //----------------------------------------------------------------------------------------------------------------- class SUICreatureSkillFundWnd : public SUIWnd { public: SUICreatureSkillFundWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo ); virtual ~SUICreatureSkillFundWnd( void ); virtual bool InitControls( KPoint kPos ); virtual bool InitData( bool bReload = false ); virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true ); virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ); virtual void ProcMsgAtStatic( SGameMessage* pMsg ); private: void CreateControls( void ); // 스킬투자 리스트 ========================================================== bool IsSkill( int nIndex, int nGrade ); void RefreshSkillInfo( void ); int GetEvolution( const class SCreatureInfo& creatureInfo ); void SetSkillData( const SkillTreeEx* pSkillTree, int nIndex, bool bShow ); bool GetSkillID( int& outId, int& outLv, int index, int grade ); bool GetLearnableSkillIDnLv( OUT int& outId, OUT int& outoriginskilliD, OUT int& outLearnableLv, int index, int grade ); void GetSkillList( int nGrade, bool bPassive, vector*& pSkillTreeList ); // 스킬투자 슬롯 ========================================================== void ClearSkillList( void ); void RefreshSkillSlot( int nGrade, int nRange = 0 ); void DisableSlot( int nMode = -1, bool bShow = false ); void DisableAllSlot( bool bShow = false ); void UpdateSkillList( int nTabType, int nGrade ); // 스킬투자 스크롤바 ========================================================== void RefreshScrollbar( int nGrade ); // 스킬투자 선택바 ========================================================== void ShowSelectBar( int nIndex, int nGrade ); void HideSelectBar( void ); // 스킬투자 스킬업 ========================================================== void SkillUP( int nIndex, int nGrade ); // 탭 ======================================================================== void SelectTab( void ); bool IsActiveTab( void ) const; void InitScrollPosition( void ); bool IsTreeCheck( const vector& vSkill_list, int nSkillID ); bool ChangeSkill( const SkillTreeEx& rTree, vector& rcmpSkillList ); bool IsPrecedentSkillSatisfied( const SkillTreeEx& tree ); void UpdateTab( int nCnt ); private: SUIDisplayInfo* m_pDisplayInfo; vector m_vActiveSkillTreeList; vector m_vActiveSkillTreeList_1; vector m_vActiveSkillTreeList_2; vector m_vActiveSkillTreeList_3; vector m_vPassiveSkillTreeList; vector m_vPassiveSkillTreeList_1; vector m_vPassiveSkillTreeList_2; vector m_vPassiveSkillTreeList_3; int m_nTabType; int m_nGrade; int m_nMaxLine; int m_nScrollPos; };