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

107 lines
3.0 KiB
C++

//////////////////////////////////////////////////////////////////////////
// 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; // 각성 / 궁극강화
};