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

📄 effectmanager.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -