123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- class ActionRepositionPluggedItem : ActionInteractBase
- {
- // Through this action players can reposition already placed electric devices without unplugging them from the power source.
- void ActionRepositionPluggedItem()
- {
- m_CallbackClass = ActionInteractBaseCB;
- m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS;
- m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
- m_Text = "#reposition";
- }
- override typename GetInputType()
- {
- return ContinuousInteractActionInput;
- }
- override bool HasProgress()
- {
- return false;
- }
-
- override bool CanBeUsedOnBack()
- {
- return false;
- }
-
- override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
- {
- ItemBase targetItem = ItemBase.Cast(target.GetObject());
- EntityAI targetParent = EntityAI.Cast(targetItem.GetHierarchyParent());
- if (!targetItem || !targetItem.IsTakeable() || targetItem.IsBeingPlaced() || (targetItem.GetCompEM() && !targetItem.GetCompEM().IsPlugged()) || ( targetItem.GetHierarchyParent() && !BaseBuildingBase.Cast(targetItem.GetHierarchyParent()) ) || ((targetParent && !targetItem.CanDetachAttachment(targetParent)) || (targetParent && !targetParent.CanReleaseAttachment(targetItem))))
- return false;
- if (targetItem.HasEnergyManager() && targetItem.GetCompEM().IsPlugged())
- return player.GetInventory().CanAddEntityIntoHands(targetItem);
-
- return false;
- }
-
- override bool CanContinue(ActionData action_data)
- {
- EntityAI ent = EntityAI.Cast(action_data.m_Target.GetObject());
- return ent && ent.GetCompEM().GetCordLength() > 0;
- }
-
- override void Start(ActionData action_data)
- {
- super.Start(action_data);
- ItemBase ntarget = ItemBase.Cast(action_data.m_Target.GetObject());
- if (GetGame().IsMultiplayer() && GetGame().IsServer())
- action_data.m_Player.PlacingStartServer(ntarget);
- else
- action_data.m_Player.PlacingStartLocal(ntarget);
- }
-
- override void OnExecuteServer(ActionData action_data)
- {
- ClearActionJuncture(action_data);
-
- if (GetGame().IsMultiplayer())
- return;
-
- InventoryLocation il = new InventoryLocation();
- ItemBase ntarget = ItemBase.Cast(action_data.m_Target.GetObject());
- ClearInventoryReservationEx(action_data);
-
- action_data.m_Player.PredictiveTakeEntityToHands(ntarget);
- }
-
- override void OnExecuteClient(ActionData action_data)
- {
- InventoryLocation il = new InventoryLocation();
- ItemBase ntarget = ItemBase.Cast(action_data.m_Target.GetObject());
- ClearInventoryReservationEx(action_data);
-
- action_data.m_Player.PredictiveTakeEntityToHands(ntarget);
- }
-
- override void CreateAndSetupActionCallback(ActionData action_data)
- {
- EntityAI target = EntityAI.Cast(action_data.m_Target.GetObject());
- ActionBaseCB callback;
- if (!target)
- return;
-
- if (target.IsHeavyBehaviour())
- {
- Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(), DayZPlayerConstants.STANCEMASK_ERECT));
- }
- else
- {
- Class.CastTo(callback, action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS,GetCallbackClassTypename()));
- }
- callback.SetActionData(action_data);
- callback.InitActionComponent();
- action_data.m_Callback = callback;
- }
- //! DEPRECATED
- protected ItemBase m_SourceForReplug;
- }
|