/*********************************************************************//**
*	Fade effect.
*	Nastavuje parametry fade efektu.
*	
*	author: Michal Jirous
*	date: 23.04.2009
*	file: ent_env_fade.cpp
**********************************************************************/

#include "ent_environments.h"
#include "HUD_fade.h"

EnvFade::EnvFade() : CBaseEnvironment()
{
	m_sClassName = "env_fade";
	m_uiFadeInDuration = m_uiFadeDuration = m_uiFadeOutDuration = 0;
	m_fStartAlpha = m_fDurationAlpha = m_fEndAlpha = 0.0f;
	m_bStay = false;
	m_iProperties = 0;
}


void EnvFade::passFlags( int flags )
{
	m_bStay = flags & FADE_STAY;
}


void EnvFade::setParameters( parameters_t &parametersMap )
{
	CBaseEnvironment::setParameters( parametersMap );
	std::string value = getParameterValue( parametersMap, "fadeindur" );
	if( !value.empty() )
		m_uiFadeInDuration = atoi( value.c_str() );

	value = getParameterValue( parametersMap, "fadedur" );
	if( !value.empty() )
		m_uiFadeDuration = atoi( value.c_str() );

	value = getParameterValue( parametersMap, "fadeoutdur" );
	if( !value.empty() )
		m_uiFadeOutDuration = atoi( value.c_str() );


	value = getParameterValue( parametersMap, "alpha_fadein" );
	if( !value.empty() )
		m_fStartAlpha = (float)atof( value.c_str() ) / 255.0f;

	value = getParameterValue( parametersMap, "alpha_fadedur" );
	if( !value.empty() )
		m_fDurationAlpha = (float)atof( value.c_str() ) / 255.0f;

	value = getParameterValue( parametersMap, "alpha_fadeout" );
	if( !value.empty() )
		m_fEndAlpha = (float)atof( value.c_str() ) / 255.0f;
}

void EnvFade::onTarget( int target_type )
{
	fadeEffect.startFade( rendercolor, m_uiFadeInDuration, m_uiFadeDuration, m_uiFadeOutDuration, m_fStartAlpha, m_fDurationAlpha, m_fEndAlpha, m_bStay );
}
