📄 ceffect.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 + -