| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | class CAContinuousEmpty : CAContinuousBase{	protected float 				m_TargetUnits;	protected float 				m_SpentQuantity;	protected float 				m_SpentQuantity_total;	protected float 				m_AdjustedQuantityEmptiedPerSecond;	protected float 				m_QuantityEmptiedPerSecond;	protected bool 					m_WringingClothes;	protected ref Param1<float>		m_SpentUnits;	protected float 				m_TimeElpased;	protected float 				m_DefaultTimeStep = 0.25;		void CAContinuousEmpty( float quantity_emptied_per_second )	{		m_QuantityEmptiedPerSecond = quantity_emptied_per_second;	}		override void Setup( ActionData action_data )	{		if ( !m_SpentUnits )		{ 			m_SpentUnits = new Param1<float>(0);		}		else		{				m_SpentUnits.param1 = 0;		}		if ( action_data.m_MainItem.IsClothing() )		{			m_WringingClothes = true;						m_SpentQuantity = action_data.m_MainItem.GetWetMax() - action_data.m_MainItem.GetWet();			m_TargetUnits = action_data.m_MainItem.GetWetMax();		}		else		{			m_WringingClothes = false;						m_SpentQuantity = action_data.m_MainItem.GetQuantityMin();			m_TargetUnits = action_data.m_MainItem.GetQuantity();		}				m_AdjustedQuantityEmptiedPerSecond = m_QuantityEmptiedPerSecond;//removed softskills 	}		override int Execute( ActionData action_data  )	{		if ( !action_data.m_Player )		{			return UA_ERROR;		}				if ( m_WringingClothes && action_data.m_MainItem.GetWet() >= action_data.m_MainItem.GetWetMax() )		{			return UA_FINISHED;		}		else		{			if ( m_SpentQuantity_total <= m_TargetUnits )			{				m_SpentQuantity += m_AdjustedQuantityEmptiedPerSecond * action_data.m_Player.GetDeltaT();				m_TimeElpased += action_data.m_Player.GetDeltaT();								if ( m_TimeElpased >= m_DefaultTimeStep )				{					CalcAndSetQuantity( action_data );					m_TimeElpased = 0;				}				return UA_PROCESSING;			}			else			{				CalcAndSetQuantity( action_data );				OnCompletePogress(action_data);				return UA_FINISHED;			}			}	}		override int Cancel( ActionData action_data )	{		if ( !action_data.m_Player || !action_data.m_MainItem )		{			return UA_ERROR;		}				CalcAndSetQuantity( action_data );		return UA_CANCEL;	}			override float GetProgress()	{		return m_SpentQuantity_total / m_TargetUnits;	}		//---------------------------------------------------------------------------		void CalcAndSetQuantity( ActionData action_data )	{		m_SpentQuantity_total += m_SpentQuantity;		if (GetGame().IsServer())		{			if ( m_SpentUnits )			{				m_SpentUnits.param1 = m_SpentQuantity;				SetACData(m_SpentUnits);			}						if (action_data.m_MainItem.GetQuantity() > 0.0)				action_data.m_MainItem.AddQuantity(-m_SpentQuantity);		}			m_SpentQuantity = 0;	}};
 |