⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccursor.cpp

📁 一个个人开发的rpg游戏<亚特兰蒂斯传奇>的源码
💻 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 + -