#pragma once #include "KRenderDeviceDX.h" #include class KTextureManager; class K3DRenderDeviceDX; const int CURSOR_CNT = 5; extern const char * pCursorName[]; class SGameCursorMng { public: enum CURSOR_TYPE { CURSOR_DEFAULT = 0, CURSOR_ATTACK, CURSOR_PICKUP, CURSOR_MOVE, CURSOR_SIDE, CURSOR_TOPBOTTOM, }; SGameCursorMng( K3DRenderDeviceDX *pRenderDevice, KTextureManager * pTextureMng ) { m_pGraphics = pRenderDevice; m_pTextureMng = pTextureMng; m_nMouseX = m_nMouseY = 0; m_nCursorType = 0; //TODO : 리소스 옵션 로딩 추가 작업 중. NX3LoadPack loadpack; loadpack.Init(); for ( int i=0 ; iGetTextureOriginal( pCursorName[i], &loadpack ); } ::ShowCursor(TRUE); m_dwTime = 0; } ~SGameCursorMng() { m_pGraphics->ShowCursor(FALSE); for ( int i=0 ; iShowCursor( bShow ); } void SetCursorPos( int nX, int nY ) { m_pGraphics->SetCursorPos( nX, nY ); } static void OnDeviceLost() { m_bUpdate = true; } static void SetCursor( CURSOR_TYPE nFrameIndex ) { if( m_nCursorFrame == nFrameIndex ) return; if( nFrameIndex >= 0 && nFrameIndex < CURSOR_CNT ) m_nCursorFrame = nFrameIndex; m_bUpdate = true; } void Process( DWORD dwTime ) { if( m_dwTime == 0 ) m_dwTime = dwTime; if( dwTime-m_dwTime>150 ) { m_dwTime = 0; } } void Render() { if( m_bUpdate ) { m_pGraphics->SetCursor( m_spCursorTextureArray[m_nCursorFrame], 0, 0 ); m_bUpdate = false; } } private: DWORD m_dwTime; int m_nCursorType; int m_nMouseX, m_nMouseY; class K3DRenderDeviceDX* m_pGraphics; KTextureManager* m_pTextureMng; K3DTextureSPtr m_spCursorTextureArray[CURSOR_CNT]; static bool m_bUpdate; static int m_nCursorFrame; };