DIFF

ActionTurnOffHelmetFlashlight.c

class ActionTurnOffHelmetFlashlight: ActionBase
{
	void ActionTurnOffHelmetFlashlight()
	{
	}
	
	override bool IsInstant()
	{
		return true;
	}
	
	override bool HasTarget()
	{
		return true;
	}
	
	override bool UseMainItem()
	{
		return false;
	}
	
	override void CreateConditionComponents()  
	{	
		m_ConditionItem = new CCINone;
		m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
	}
	
	override typename GetInputType()
	{
		return ToggleLightsActionInput;
	}
	
	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
	{
		Switchable_Base light;
		Mich2001Helmet helmet;
		helmet = Mich2001Helmet.Cast(target.GetObject());
		if ( !helmet )
			return false;
		light = Switchable_Base.Cast(helmet.FindAttachmentBySlotName("helmetFlashlight"));
		if ( !light )
			return false;
		
		if ( light.HasEnergyManager() && light.GetCompEM().CanSwitchOff() ) //TODO review conditions for turning off
		{
			return true;
		}
		
		return false;
	}

	override void Start( ActionData action_data )
	{
		super.Start( action_data );
		
		Switchable_Base light;// = Switchable_Base.Cast(action_data.m_MainItem.FindAttachmentBySlotName("helmetFlashlight"));
		Mich2001Helmet helmet;
		helmet = Mich2001Helmet.Cast(action_data.m_Target.GetObject());
		light = Switchable_Base.Cast(helmet.FindAttachmentBySlotName("helmetFlashlight"));
		
		if ( light.HasEnergyManager() )
		{
			if ( light.GetCompEM().IsSwitchedOn() )
			{
				light.GetCompEM().SwitchOff();
			}
		}
	}
};