/*********************************************************************//**
*	Snih
*	Nastavuje globalni parametry snehu.
*	
*	author: Michal Jirous
*	date: 23.04.2009
*	file: ent_env_snow_global.cpp
**********************************************************************/

#include "ent_environments.h"
#include "snow_system.h"
#include "parsing.h"
#include "level_loader.h"

EnvSnowGlobal::EnvSnowGlobal()
{
	m_iDensity = SNOW_DENSITY_MEDIUM;
	m_iProperties = 0;
	m_sClassName = "env_snow_global";
}
void EnvSnowGlobal::setParameters( parameters_t &parametersMap )
{
	CBaseEnvironment::setParameters( parametersMap );

	m_sWinds = getParameterValue( parametersMap, "winds" );
	
	std::string value = getParameterValue( parametersMap, "density" );
	if( !value.empty() )
		m_iDensity = atoi( value.c_str() );
}


void EnvSnowGlobal::compile()
{
	CBaseEnvironment::compile();


	snowSystem.setDensity( m_iDensity );

	std::istringstream in( m_sWinds );
	std::string windName;
	while( !(windName = parsing::readField( in, ';' )).empty() )
	{
		entityList_t *wind = levelLoader.m_Entities.getEntitiesByName( windName );
		if( wind )
		{
			for( entityList_t::iterator iter = wind->begin(); iter != wind->end(); ++iter )
			{
				if( (*iter)->getClassName() == "env_wind" )
				{
					snowSystem.addWind( reinterpret_cast<EnvWind*>( (*iter)  ) );
				}
			}
		}
	}
}
