Files
Leviathan/Client/Game/game/Interface/Notification/SUINotificationWnd.h
T
2026-06-01 12:46:52 +02:00

67 lines
2.1 KiB
C++

#ifndef _SUINotificationWnd_h_
#define _SUINotificationWnd_h_
//#include "SUIWnd.h"
//#include "SUIUtil.h"
//#include "Util.h"
struct sNotificationEffect;
class SUINotificationWnd : public SUIWnd
{
public:
SUINotificationWnd(SGameManager* pGameManager);
virtual ~SUINotificationWnd();
virtual bool InitData( bool reload = false );
virtual void Process(DWORD dwTime);
virtual void ProcMsgAtStatic( SGameMessage* msg );
virtual void PumpUpMessage( LPCTSTR controlID, DWORD msg, DWORD lparam, DWORD wparam );
virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true );
private:
void initFp();
void getWndInfo();
void initEffect();
void initTooltip();
/// 안쓰이는 컨트롤들을 우선 하이드 시킨다.
void hideUnUsedControl();
void close();
/// 맨 위의 알림을 삭제한다
void popFirstNotification();
void popNotificationBuffer();
/// 알림을 맨 위로 추가한다.
void pushNotification(char const* nofitication);
void pushNotificationBuffer(char const* notification);
void syncPos();
bool isEmptyNotification() const;
void procUpdate(float elapsedTime);
void procEffect(float elapsedTime);
/// 알림 메세지를 컨트롤에 설정한다
void setNotificationToControl();
void removeFirstNotification();
void startEffect();
void applyNotification();
/// 전체 닫기 버튼의 show/hide, 알림이 한개일 때는 hide되고 2개 이상일 때만 보인다.
void checkCloseAllButtonVisible();
void beginUpdateTime();
void procMsgData(SGameMessage* msg);
private:
cClassFuncP<SUINotificationWnd> m_controlFp;
cClassParamFuncP<SUINotificationWnd, SGameMessage*, int> m_msgFp;
std::list<std::string> m_notificationList;
std::list<std::string> m_notificationBuffer; /// buffer ->effect, list
sUpdateTime<float> m_updateTime;
DWORD m_time;
KUIWnd* m_notificationStatic;
KUIWnd* m_closeAllButton;
sNotificationEffect* m_notificationEffect;
static float SEQUENCE_UPDATE_TIME; /// 여러개가 있을 때의 업데이트 시간
static float LAST_UPDATE_TIME; /// 마지막 한개만 있을 때의 업데이트 시간
};
#endif