📄 ccursor.cpp
字号:
//--------------------------------------------------------------------------------------------------------
// 游戏图标模块
//CCursor.cpp
//游戏引擎中的图标部分
//作者:吴振华(kylinx)(中国科大01级11系)
//E-mail:game-diy@163.com
//创建于:2003/7/13 by Kylinx
//--------------------------------------------------------------------------------------------------------
#include"CCursor.h"
#include"CMacro.h"
CIconAni::CIconAni():CRenderTask()
{
m_pSurf=NULL;
m_aArea=NULL;
m_dwCurrentFrame=0;
m_dwOldTime=0;
m_dwFrames=0;
}
CIconAni::~CIconAni()
{
}
void CIconAni::NextFrame()
{
if(timeGetTime()-this->m_dwOldTime < this->m_dwDelay)
return;
m_dwOldTime=timeGetTime();
m_dwCurrentFrame++;
if(m_dwCurrentFrame>=m_dwFrames)
m_dwCurrentFrame=0;
}
BOOL CIconAni::InitIconAniDefault(int x,int y,CDisplay*pDisplay,int Kinds)
{
LOA_ASSERT(pDisplay!=NULL);
m_pDisplay=pDisplay;
m_bEnd=false;
m_x=x;
m_y=y;
switch(Kinds)
{
case LOA_ICON_NEXT:
{
if(FAILED(m_pDisplay->CreateSurfaceFromBitmap(&m_pSurf,"pic\\icon\\next.bmp",0,0)))
return false;
m_pSurf->SetColorKey(RGB(255,0,255));
m_dwDelay=125;
m_dwFrames=4;
m_dwCurrentFrame=0;
m_dwOldTime=0;
m_aArea=new RECT[m_dwFrames];
if(!m_aArea)
return false;
for(DWORD i=0;i<m_dwFrames;i++)
{
::SetRect(&m_aArea[i],0,i*15,21,(i+1)*15);
}
return true;
}
break;
case LOA_ICON_ARROW:
{
if(FAILED(m_pDisplay->CreateSurfaceFromBitmap(&m_pSurf,"pic\\icon\\arrow.bmp",0,0)))
return false;
m_pSurf->SetColorKey(RGB(255,0,255));
m_dwDelay=125;
m_dwFrames=4;
m_dwCurrentFrame=0;
m_dwOldTime=0;
m_aArea=new RECT[m_dwFrames];
if(!m_aArea)
return false;
for(DWORD i=0;i<m_dwFrames;i++)
{
::SetRect(&m_aArea[i],i*16,0,(i+1)*16,16);
}
return true;
}
break;
}
return false;
}
void CIconAni::EndRender()
{
m_bEnd=true;
}
void LOA_RENDER_API CIconAni::Render()
{
m_pDisplay->ColorKeyBlt(m_x,m_y,m_pSurf->GetDDrawSurface(),&m_aArea[m_dwCurrentFrame]);
NextFrame();
}
BOOL LOA_RENDER_API CIconAni::IsRenderComplete()
{
return m_bEnd;
}
void LOA_RENDER_API CIconAni::Release()
{
if(m_pSurf)
{
delete m_pSurf;
m_pSurf=NULL;
}
if(m_aArea)
{
delete [] m_aArea;
m_aArea=NULL;
}
}
CIcon::CIcon()
{
m_pSurf=NULL;
m_aArea=NULL;
}
CIcon::~CIcon()
{
Release();
}
void CIcon::NextFrame()
{
if(timeGetTime()-this->m_dwOldTime < this->m_dwDelay)
return;
m_dwOldTime=timeGetTime();
m_dwCurrentFrame++;
if(m_dwCurrentFrame>=m_dwFrames)
m_dwCurrentFrame=0;
}
BOOL CIcon::InitIcon(CDisplay*pDisplay,int Kinds)
{
LOA_ASSERT(pDisplay!=NULL);
m_pDisplay=pDisplay;
switch(Kinds)
{
case LOA_ICON_NEXT:
{
if(FAILED(m_pDisplay->CreateSurfaceFromBitmap(&m_pSurf,"pic\\icon\\next.bmp",0,0)))
return false;
m_pSurf->SetColorKey(RGB(255,0,255));
m_dwDelay=125;
m_dwFrames=4;
m_dwCurrentFrame=0;
m_dwOldTime=0;
m_aArea=new RECT[m_dwFrames];
if(!m_aArea)
return false;
for(DWORD i=0;i<m_dwFrames;i++)
{
::SetRect(&m_aArea[i],0,i*15,21,(i+1)*15);
}
return true;
}
break;
case LOA_ICON_ARROW:
{
if(FAILED(m_pDisplay->CreateSurfaceFromBitmap(&m_pSurf,"pic\\icon\\arrow.bmp",0,0)))
return false;
m_pSurf->SetColorKey(RGB(255,0,255));
m_dwDelay=125;
m_dwFrames=4;
m_dwCurrentFrame=0;
m_dwOldTime=0;
m_aArea=new RECT[m_dwFrames];
if(!m_aArea)
return false;
for(DWORD i=0;i<m_dwFrames;i++)
{
::SetRect(&m_aArea[i],i*16,0,(i+1)*16,16);
}
return true;
}
break;
}
return false;
}
void CIcon::Show(int x,int y)
{
m_pDisplay->ColorKeyBlt(x,y,m_pSurf->GetDDrawSurface(),&m_aArea[m_dwCurrentFrame]);
NextFrame();
}
void CIcon::Release()
{
if(m_pSurf)
{
delete m_pSurf;
m_pSurf=NULL;
}
if(m_aArea)
{
delete [] m_aArea;
m_aArea=NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -