class ActionIgniteFireplaceByAirCB : ActionContinuousBaseCB
{
	override void CreateActionComponent()
	{
		m_ActionData.m_ActionComponent = new CAContinuousTime( UATimeSpent.FIREPLACE_IGNITE );
	}
};

class ActionIgniteFireplaceByAir: ActionContinuousBase
{	
	void ActionIgniteFireplaceByAir()
	{
		m_CallbackClass = ActionIgniteFireplaceByAirCB;
		m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_BLOWFIREPLACE;
		m_FullBody = true;
		m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
		m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;	
		m_Text = "#blow_air_into_fireplace";
	}

	override void CreateConditionComponents()  
	{	
		m_ConditionTarget = new CCTNonRuined( UAMaxDistances.DEFAULT );
		m_ConditionItem = new CCINotPresent;
	}

	override typename GetInputType()
	{
		return ContinuousInteractActionInput;
	}
		
	override bool ActionCondition ( PlayerBase player, ActionTarget target, ItemBase item )
	{
		Object target_object = target.GetObject();
		FireplaceBase fireplace_target = FireplaceBase.Cast( target_object );
		
		if ( target_object && target_object.IsFireplace() )
		{
			if ( fireplace_target.IsBaseFireplace() || fireplace_target.IsFireplaceIndoor() )
			{				
				if ( !fireplace_target.IsBurning() && fireplace_target.GetTemperature() >= fireplace_target.PARAM_MIN_TEMP_TO_REIGNITE )
				{
					return true;
				}
			}
		}
		
		return false;
	}
		
	override void OnFinishProgressServer( ActionData action_data )
	{
		FireplaceBase fireplace_target = FireplaceBase.Cast( action_data.m_Target.GetObject() );

		//start fire
		fireplace_target.StartFire();
	}
	
	bool SkipKindlingCheck()
	{
		return false;
	}
}