229 lines
7.7 KiB
C++
229 lines
7.7 KiB
C++
#pragma once
|
|
|
|
//#include <vector>
|
|
//#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<SSkillSlot*> m_vecActiveSkillList;
|
|
vector<SSkillSlot*> 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; // 오버브리드 속성 태그 <font:>,<size:>.. <etc>
|
|
|
|
};
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
// 크리쳐 스킬 배우기 윈도우
|
|
//-----------------------------------------------------------------------------------------------------------------
|
|
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<const SkillTreeEx>*& 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<SkillTreeEx>& vSkill_list, int nSkillID );
|
|
bool ChangeSkill( const SkillTreeEx& rTree, vector<const SkillTreeEx>& rcmpSkillList );
|
|
bool IsPrecedentSkillSatisfied( const SkillTreeEx& tree );
|
|
|
|
void UpdateTab( int nCnt );
|
|
|
|
|
|
private:
|
|
|
|
|
|
SUIDisplayInfo* m_pDisplayInfo;
|
|
|
|
vector<const SkillTreeEx> m_vActiveSkillTreeList;
|
|
vector<const SkillTreeEx> m_vActiveSkillTreeList_1;
|
|
vector<const SkillTreeEx> m_vActiveSkillTreeList_2;
|
|
vector<const SkillTreeEx> m_vActiveSkillTreeList_3;
|
|
|
|
vector<const SkillTreeEx> m_vPassiveSkillTreeList;
|
|
vector<const SkillTreeEx> m_vPassiveSkillTreeList_1;
|
|
vector<const SkillTreeEx> m_vPassiveSkillTreeList_2;
|
|
vector<const SkillTreeEx> m_vPassiveSkillTreeList_3;
|
|
|
|
int m_nTabType;
|
|
int m_nGrade;
|
|
int m_nMaxLine;
|
|
int m_nScrollPos;
|
|
}; |