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

📄 ceffect.cpp

📁 一个个人开发的rpg游戏<亚特兰蒂斯传奇>的源码
💻 CPP
字号:
//--------------------------------------------------------------------------------------------------------
//                        游戏特效模块
//CEffect.cpp
//游戏引擎中的特效部分
//作者:吴振华(kylinx)(中国科大01级11系)
//E-mail:game-diy@163.com
//创建于:2003/7/25 by Kylinx
//--------------------------------------------------------------------------------------------------------

#include"CEffect.h"
#include"CGame.h"
#include"CMacro.h"
BOOL CRenderEffect::InitEffect(CGame*pGame,int x,int y,int EffectID)
{
	LOA_ASSERT(pGame);
	STEffect*pEffect;
	if(!pGame->GetEffectDataBase()->FindData(EffectID,&pEffect))
		return false;
	return InitEffect(pGame,x,y,pEffect);
}

BOOL CRenderEffect::InitEffect(CGame*pGame,int x,int y,STEffect*pEffect)
{
	LOA_ASSERT(pGame);
	LOA_ASSERT(pEffect);
	
	m_pEffect=pEffect;
	m_cxOrg=x;
	m_cyOrg=y;
	m_cxStaticOrg=x;
	m_cyStaticOrg=y;
	m_nCurrentFrame=0;
	m_dwOldTime=0;
	m_pGame=pGame;
	if(m_pEffect->pSound)
	{
		if(!m_pEffect->pSound->IsSoundPlaying())
			m_pEffect->pSound->Play(0,0);
	}
	return true;
}

void CRenderEffect::Release()
{
}

BOOL CRenderEffect::IsRenderComplete()
{
	if(m_pEffect->pSound)
	{
		if(m_pEffect->pSound->IsSoundPlaying())
			return false;
	}
	if(this->m_nCurrentFrame>=m_pEffect->nFrames)
		return true;
	return false;
}

void CRenderEffect::Render()
{
	if(m_nCurrentFrame>=m_pEffect->nFrames)
			return;
	if(m_pEffect->AlWaysShowFrameID>0 && m_pEffect->AlWaysShowFrameID<=m_pEffect->nFrames)
	{
		m_pGame->GetDisplay()->ColorKeyBlt(m_cxStaticOrg,
									   m_cyStaticOrg,
									   m_pEffect->pSurface->GetDDrawSurface(),
									   &m_pEffect->aRect[m_pEffect->AlWaysShowFrameID-1]);
	}
	m_pGame->GetDisplay()->ColorKeyBlt(m_cxOrg,
									   m_cyOrg,
									   m_pEffect->pSurface->GetDDrawSurface(),
									   &m_pEffect->aRect[m_nCurrentFrame]);
	if(timeGetTime()-m_dwOldTime>m_pEffect->dwDelay)
	{
		m_dwOldTime=timeGetTime();
		m_cxOrg+=m_pEffect->aFrameOffsiteX[m_nCurrentFrame];
		m_cyOrg+=m_pEffect->aFrameOffsiteY[m_nCurrentFrame];
		m_nCurrentFrame++;
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -