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

154 lines
4.0 KiB
C++

#pragma once
//#include "SUIWnd.h"
class SUILoadingWnd : public SUIWnd
{
public:
class ILoadingMessageSelector
{
public:
virtual ~ILoadingMessageSelector() {}
virtual std::string selectMessage() = 0;
};
/*SUILoadingWnd(SGameManager* pGameManager) : SUIWnd(pGameManager)
, m_dwTime ( 0 )
, m_dwWarringTime ( 0 )
, m_pMessageSelector ( 0 )
{ }
~SUILoadingWnd()
{
SAFE_DELETE( m_pMessageSelector );
}*/
SUILoadingWnd(SGameManager* pGameManager);
~SUILoadingWnd();
bool CreateControls( class KUIWndManager* pWndManager );
virtual void Process(DWORD dwTime);
virtual void OnDeviceLost();
virtual void Render( KViewportObject *pViewport, bool isFront = false );
virtual void ProcMsgAtStatic( SGameMessage* pMsg );
void RefreshImage(unsigned int warpx, unsigned int warpy);
bool IsShowKoreaWarring() { return s_nForceRenderKoreaWarring == 1 ? true : false; }
void SetChangeKoreaWarringCaption( int nStringID );
void SetAdultMode( bool adultmode );
void SetGameguardIintMode( bool guardmode );
static void SetRenderKoreaWarring( short nForceRenderKoreaWarring )
{
s_nForceRenderKoreaWarring = nForceRenderKoreaWarring;
}
static void SetFirstLoading( bool bFirst )
{
s_bFirstLoading = bFirst;
}
void SetMessageSelector( ILoadingMessageSelector* selector )
{
SAFE_DELETE( m_pMessageSelector );
m_pMessageSelector = selector;
}
void UpdateLoadingProgress(float fPercent);
void InitLoadingBar();
void UpdateAddLoadingProcess(float fAddValue);
private:
bool isCurArenaLocation(unsigned int warpx, unsigned int warpy) const;
char const* getArenaLoadingImgName() const;
char const* getArenaTipMessage() const;
protected:
float m_fLoadingPercent;
DWORD m_dwTime;
int m_nCount;
void refreshLoadImage(unsigned int warpx = 0, unsigned int warpy = 0);
K3DTextureSPtr m_spLoadingTexture;
K3DTextureSPtr m_spPanelTexture;
DWORD m_dwWarringTime;
static short s_nForceRenderKoreaWarring; ///< 0 : 경고문 출력안함 //1 : 3초간 출력 //
static bool s_bFirstLoading;
ILoadingMessageSelector* m_pMessageSelector;
SUIWnd *m_pkWndLoadingProgress;
SUIWnd *m_pWndUpinfo;
SUIWnd *m_pWndDowninfo;
SUIWnd *m_pWndGamerating_15;
SUIWnd *m_pWndGamerating_18;
SUIWnd *m_pWndRappelzLogo;
SUIWnd *m_pWndPublisherLogo;
SUIWnd *m_pWndNFlaverLogo;
SUIWnd *m_pWndNowLoading;
SUIWnd *m_wndCopyRight; // 2010.07.14 - prodongi
private:
enum { ARENA_LOADING_IMG_COUNT = 3 };
enum { ARENA_TIP_MESSAGE_START_ID = 2505, ARENA_TIP_MESSAGE_END_ID = 2524 };
};
//---------------------------------------------------------------------------
///\class SUILoadingProgressWnd
///\brief 로딩 화면 프로그래스 바 처리
///\author robypark
///\date 20081103 ~
//---------------------------------------------------------------------------
class SUILoadingProgressWnd : public SUIWnd
{
public:
SUILoadingProgressWnd( class SGameManager* pGameManager );
virtual ~SUILoadingProgressWnd();
public:
virtual SUIWnd* CreateWnd( const char* szNUIFileName, KUIWndManager* pWndManager, KPoint kPos, int nWindowID = -1 );
virtual void OnPosChangeNofity(int offsetx,int offsety);
public:
///\brief 진행 상황 설정(0.0f ~ 1.0f)
///\param fPercent 0.0f <= fPercent <= 1.0f
bool SetProgress(float fPercent);
///\brief 진행 상황 설정
///\param nMin 최소
///\param nMax 최대
///\param nCurrent 현재 값. (nMin <= nCurrent <= nMax)
bool SetProgress(int nMin, int nMax, int nCurrent);
///\brief 현재 진행 % 얻기
inline float GetCurrentPercent() const
{
return m_fCurrentPercent;
}
protected:
KRect m_kGaugeOpen; ///< 게이지 이미지 (
KRect m_kGaugeMiddle; ///< 게이지 이미지 |
KRect m_kGaugeClose; ///< 게이지 이미지 )
float m_fWidth; ///< 화면 가로 크기
float m_fHeight; ///< 화면 세로 크기
float m_fCurrentPercent; ///< 현재 진행 %
};
//---------------------------------------------------------------------------