#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 m_controlFp; cClassParamFuncP m_msgFp; std::list m_notificationList; std::list m_notificationBuffer; /// buffer ->effect, list sUpdateTime 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