DIFF

RainProcurementManager.c

//!DEPRECATED, done through the RainProcurementHandler / component instead
class RainProcurementManager
{
	protected 			ItemBase 	m_ProcuringItem;	
	protected 			int 		m_IsUnderRoof;
	protected	ref	Timer 		m_UpdateTimer;
	protected 	const 	int 		RAIN_COEFFICIENT = 10;

	void RainProcurementManager( ItemBase procuring_item )
	{
		m_ProcuringItem = procuring_item;
	}
	
	// ----------------------------------------------------------------------------------------
	void InitRainProcurement()
	{
		m_IsUnderRoof = MiscGameplayFunctions.IsUnderRoof(m_ProcuringItem);

		//m_ProcuringItem.SetQuantity(0); /*set to 0 for debug purposses*/

		if ( !m_IsUnderRoof )
		{
			m_UpdateTimer = new Timer();
			m_UpdateTimer.Run( 10, this, "RainProcurementCheck", NULL, true ); 
		}
	}

	// ----------------------------------------------------------------------------------------
	void RainProcurementCheck()
	{		
		float rain_intensity = g_Game.GetWeather().GetRain().GetActual();
		float fill_per_update = RAIN_COEFFICIENT * rain_intensity;

		if ( rain_intensity > 0 ) 
		{
			if ( m_ProcuringItem.GetQuantity() < m_ProcuringItem.GetQuantityMax() )
			{
				Liquid.FillContainerEnviro( m_ProcuringItem, LIQUID_FRESHWATER, fill_per_update );

				//Print( "Quantity of " + m_ProcuringItem + " is: " +  m_ProcuringItem.GetQuantity() );
			}
			else
			{		
				//Print("vesel full");		
				StopRainProcurement();				
			}
		}
	}

	// ----------------------------------------------------------------------------------------
	/*bool IsUnderRoof() 
	{
		vector minMax[2];
		m_ProcuringItem.GetCollisionBox(minMax);

		vector size = Vector(0,0,0);
		size[1] = minMax[1][1] - minMax[0][1];

		vector from = m_ProcuringItem.GetPosition() + size;  
		vector ceiling = "0 20 0";
		vector to = from + ceiling;
		vector contact_pos;
		vector contact_dir;

		int contact_component;	
	
		return DayZPhysics.RaycastRV( from, to, contact_pos, contact_dir, contact_component, NULL, NULL, m_ProcuringItem );	
	}*/

	// ----------------------------------------------------------------------------------------
	bool IsRunning()
	{
		return m_UpdateTimer != null;
	}
	
	void StopRainProcurement()
	{
		if( !m_IsUnderRoof )
		{
			m_UpdateTimer.Stop();	
		}
		
	}
};