////////////////////////////////////////////////////////////////////////// // Name : SUIAwakening.h // Desc : 각성 ////////////////////////////////////////////////////////////////////////// #pragma once //#include "SUIWnd.h" // UI 공통 클래스 #include "SInventoryMgr.h" #include "SUIDisplayInfo.h" const DWORD TIME_WNDCLOSE = 1500; const DWORD TIME_BOUNCE = 1000; // 5개 Wnd Total. const DWORD TIME_INTERVAL_SLOT = 150; const DWORD TIME_BOUNCE_GAP = 500; const BYTE COUNT_OPTION = 5; const float BOUNCE_ACCEL = 2.0f; const char arOptionNameWnd[COUNT_OPTION][3][16] = { { "outframe_01","text_bg_01", "text_point_01" }, { "outframe_02","text_bg_02", "text_point_02" }, { "outframe_03","text_bg_03", "text_point_03" }, { "outframe_04","text_bg_04", "text_point_04" }, { "outframe_05","text_bg_05", "text_point_05" } }; const char c_szStartEffectAniName[16] = "start_ani_01"; const char c_szEndEffectAniName[16] = "end_ani_01"; enum eAWAKENINGSTATUS{ STATUS_NORMAL, STATUS_ING_AWAKENING, // 각성중.. STATUS_ING_UNAWAKENING, // 각성 봉인중.. STATUS_COMPLETE // 완료 }; enum eSLOTSTATUS { SLOT_STATUS_NORMAL, SLOT_STATUS_START, SLOT_STATUS_END }; typedef struct { DWORD dwOption; int nValue; DWORD dwTime; DWORD dwPreTime; BYTE nStatus; // 0:처음 1: 움직이는중 2:완료 } tagOption; class SUIAwakeningWnd : public SUIWnd { public: SUIAwakeningWnd( SGameManager * pGameManager, SUIDisplayInfo* pDisplayInfo ); virtual ~SUIAwakeningWnd(); virtual SUIWnd* CreateWnd( const char* szFile, KUIWndManager* pWndManager, KPoint kPos, int nWindowID ); virtual void Render( KViewportObject *viewport,bool isFront ); virtual bool InitControls( KPoint kPos ); virtual bool InitData( bool bReload = false ); void InitShowOptionWnd(); void InitSlotOptionAndTime(); void InitSlotBounceStartPosition(); virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true ); virtual void ProcMsgAtStatic( SGameMessage* pMsg ); void SetSlotOptionAndTime(SInventorySlot* pSlot, DWORD dwTime); void SetSlotBounceStartPosition(int nOffSet); void SetCaptionByResult(); void SetCaptionOptionName(int nIndex, DWORD dwOption); void SetCaptionOptionValue(int nIndex, DWORD dwOption, int nValue); void SetBounce(DWORD dwTime); void SetStatus(eAWAKENINGSTATUS Status); void SetShowSlot(int nSlot, bool bShow); virtual void Process(DWORD dwTime); void ProcBounceEffectWnd(DWORD dwTime); void ProcSetBounceSlots(DWORD dwTime); private: SUIDisplayInfo* m_pDisplayInfo; tagOption m_stOption[COUNT_OPTION]; DWORD m_dwPastTime; DWORD m_dwStartTime; int m_nOriginPosition[3]; // 결과적으로 Control이 있어야 되는 위치. int m_nBounceStartPosition; // 위에서 떨어질 위치. int m_nBounceBottomPosition; // 다시 위로 팅겨져야 되는 위치. float nSlotSpeed; DWORD dwDownTime; DWORD dwUpTime; bool bAwaken; // 각성 / 궁극강화 };