📄 effectmanager.cpp
字号:
#include "stdafx.h"
#include "BaseEffect.h"
#include "EffectManager.h"
#include "EffectFactory.h"
EffectManager::EffectManager( Field *pField, DWORD dwMaxPoolSize )
{
m_pField = pField;
m_pEffectFactory = new EffectFactory;
m_pEffectFactory->Init( dwMaxPoolSize );
m_listEffects.clear();
}
EffectManager::~EffectManager()
{
Release();
SAFE_DELETE( m_pEffectFactory );
}
VOID EffectManager::Release()
{
for( EFFECT_LIST_ITER it = m_listEffects.begin(); it != m_listEffects.end(); ++it )
{
BaseEffect *pEffect = *it;
pEffect->End();
m_pEffectFactory->FreeEffect( pEffect );
}
m_listEffects.clear();
}
BaseEffect* EffectManager::AllocEffect( eFIELDEFFECT_TYPE eEffectType )
{
// Effect甫 货肺 且寸秦辑 眠啊茄促.
BaseEffect* pEffect = (BaseEffect*)m_pEffectFactory->AllocEffect( eEffectType );
if( !pEffect )
{
SUNLOG( eCRITICAL_LOG, "[EffectManager::AllocEffect] Can't Allocate BaseEffect " );
return NULL;
}
// 捞棋飘 府胶飘俊 殿废
m_listEffects.push_back( pEffect );
pEffect->SetStateID( eEffectType );
// Init()阑 茄 促澜俊 Start甫 龋免秦具 窍绰单 泅犁 巩力 乐澜...(烙矫)
pEffect->Start();
return pEffect;
}
VOID EffectManager::RemoveEffect( EFFECT_LIST_ITER &it )
{
BaseEffect* pEffect = *it;
// 付公府 累诀阑 秦霖促.
pEffect->End();
m_pEffectFactory->FreeEffect( pEffect );
it = m_listEffects.erase( it );
}
VOID EffectManager::Update( DWORD curTime )
{
for( EFFECT_LIST_ITER it = m_listEffects.begin(); it != m_listEffects.end(); )
{
BaseEffect *pEffect = *it;
// 矫埃捞 父丰登菌栏搁
if( pEffect->IsExpired( curTime ) )
{
RemoveEffect( it++ );
continue;
}
if( !pEffect->IsExecuteTime( curTime ) )
{
++it;
continue;
}
// 林扁利牢 Effect牢 版快俊父 角青茄促.
pEffect->Execute();
++it;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -