ActionTurnValve.c
class ActionTurnValveCB : ActionContinuousBaseCB
{
override void CreateActionComponent()
{
m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.DEFAULT);
}
}
class ActionTurnValve : ActionContinuousBase
{
void ActionTurnValve()
{
m_CallbackClass = ActionTurnValveCB;
m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_TURN_VALVE;
m_FullBody = true;
m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
m_Text = "#STR_USRACT_TURN";
}
override typename GetInputType()
{
return ContinuousInteractActionInput;
}
override void CreateConditionComponents()
{
m_ConditionItem = new CCINone();
m_ConditionTarget = new CCTCursor();
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
EntityAI targetEntity;
if (Class.CastTo(targetEntity, target.GetObject()))
{
if (targetEntity.HasTurnableValveBehavior())
{
int valveIndex = targetEntity.GetTurnableValveIndex(target.GetComponentIndex());
if (valveIndex != -1)
{
if (!IsInReach(player, target, UAMaxDistances.DEFAULT))
{
return false;
}
return targetEntity.IsValveTurnable(valveIndex);
}
}
}
return false;
}
override void OnStart(ActionData action_data)
{
super.OnStart(action_data);
action_data.m_Player.TryHideItemInHands(true);
}
override void OnEnd(ActionData action_data)
{
action_data.m_Player.TryHideItemInHands(false);
super.OnEnd(action_data);
}
override bool IsLockTargetOnUse()
{
return false;
}
}