Files
2026-06-01 12:46:52 +02:00

153 lines
4.4 KiB
C++

#pragma once
//#include "SUIWnd.h"
class SInventorySlot;
class SUIDisplayInfo;
class KUIControlGauge;
namespace{
enum{
MODE_ALL,
MODE_STAT,
MODE_ITEM,
MODE_REGEN,
};
};
class SUICreaturePageWnd : public SUIWnd
{
public:
SUICreaturePageWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo );
virtual bool InitControls( KPoint kPos );
virtual bool InitData( bool bReload = false );
virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam );
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true );
virtual void OnRefresh( SGameMessage* pMsg );
// operators
private:
void RefreshHPMP( AR_HANDLE hCreature );
void RefreshHP( int nHP, int nMaxHP );
void RefreshMP( int nMP, int nMaxMP );
void RefreshAddInfo( const char * pControlName, int nValue );
// 생성 ===================
void CreateTab();
void InitValue();
// 해당 컨트롤에 값 넣어준다 ====
void SetValue( std::string strName, int nValue, bool bPercent = false );
std::string GetValue( int nValue, bool bPer = false );
void SetGauge( class KUIControlGauge* pGauge, __int64 nCur, __int64 nMax );
// 업데이트 =====================
void RefreshInfo( int nMode = MODE_ALL, AR_HANDLE hCreature = 0 );
void RefreshCreatureName( AR_HANDLE hCreature );
void RefreshCreatureClass( AR_HANDLE hCreature );
void RefreshCreaturerRank( AR_HANDLE hCreature );
void RefreshCreaturerOverbreed( AR_HANDLE hCreature);
void RefreshCreaturerEvolutionFormIcon( AR_HANDLE hCreature);
void RefreshCreatureFace( AR_HANDLE hCreature );
void RefreshCreatureLevel( AR_HANDLE hCreature );
void RefreshCreatureExp( AR_HANDLE hCreature );
void RefreshCreatureJP( AR_HANDLE hCreature );
void RefreshStat( AR_HANDLE hCreature );
void RefreshItemStat( AR_HANDLE hCreature );
void RefreshParameter( AR_HANDLE hCreature );
void RefreshItemParameter( AR_HANDLE hCreature );
void RefreshRegen( bool bHP, int nPer, int nPoint, AR_HANDLE hCreature );
void RefreshCreatureStat( AR_HANDLE hCreature );
// 스킬/파라미터 전환 ==============
void RefreshTab();
void RefreshDetailWnd();
private:
SUIDisplayInfo* m_pDisplayInfo;
bool m_bShowDetailWnd;
KUIControlStatic* m_pOverBreed; // 오버 브리드 컨트롤
KUIControlStatic* m_pOverBreedIcon; // 오버 브리드 아이콘
KUIControlIconStatic* m_pEvolutionRankIcon; // 진화 등급 아이콘
std::string m_strOverBreedPropertyTag; // 오버브리드 속성 태그 <font:>,<size:>.. <etc>
};
/// 디테일
class SUIDetailCreaturePageWnd : public SUIWnd
{
public:
SUIDetailCreaturePageWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo )
: SUIWnd( pGameManager )
, m_pDisplayInfo( pDisplayInfo )
{ }
virtual ~SUIDetailCreaturePageWnd();
virtual bool InitControls( KPoint kPos );
virtual bool InitData( bool bReload = false );
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true );
// operators
private:
// 장착 아이템 ======================
void RefreshCreatureItemSlots();
void EnableCreatureItemSlots( int nPos = 0, bool bEnable = false, bool bAll = false );
void InitValue();
void SetValue( char const* strName, int nValue, bool bPercent = false );
void SetItemValue( char const* strName, char const* strSignName, int nValue, bool bPercent = false );
void SetItemSignValue(char const* strName, int nValue);
void RefreshInfo(AR_HANDLE hCreature);
void RefreshParameter(AR_HANDLE hCreature);
void RefreshItemParameter(AR_HANDLE hCreature);
// 2010.05.10 크리쳐 강화 정보 업데이트 - prodongi
void refreshCreatureEnhance();
private:
struct SItemDurability
{
SItemDurability() { pGaugeBase = NULL; pGauge = NULL; pIcon = NULL; }
KUIControlStatic* pGauge; // Durability Gauge
KUIControlStatic* pGaugeBase; // Durability Base
KUIControlMultiIcon* pIcon; // Icon
};
enum DURABILITY
{
ITEM0 = 0,
ITEM1,
ITEM2,
ITEM3,
ITEM4,
MAX = 5
};
// attribute
private:
SUIDisplayInfo* m_pDisplayInfo;
float m_fGaugeWidth;
SItemDurability m_sCreatureCardDurability;
std::vector< SItemDurability* > m_vcDurability;
};