12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- //!DEPRECATED
- class ActionAttachPowerSourceToPanel: ActionSingleUseBase
- {
- void ActionAttachPowerSourceToPanel()
- {
- m_Text = "#attach";
- }
- override void CreateConditionComponents()
- {
- m_ConditionItem = new CCINonRuined;
- m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
- }
-
- override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
- {
- EntityAI target_entity = EntityAI.Cast( target.GetObject() );
- if ( player && target_entity && item )
- {
- if ( target_entity.IsStaticTransmitter() && target_entity.GetInventory().AttachmentCount() == 0 ) //has any power source attachment attached
- {
- return true;
- }
- }
-
- return false;
- }
- protected void OnExecuteImpl( ActionData action_data )
- {
- EntityAI target_entity = EntityAI.Cast( action_data.m_Target.GetObject() );
- EntityAI item_entity = action_data.m_MainItem;
-
- //find inventory location for attachment
- InventoryLocation target_location = new InventoryLocation;
- if ( target_entity.GetInventory().FindFirstFreeLocationForNewEntity( item_entity.GetType(), FindInventoryLocationType.ATTACHMENT, target_location ) )
- {
- action_data.m_Player.PredictiveTakeEntityToTargetAttachmentEx( target_entity, item_entity, target_location.GetSlot() );
- }
- }
- override void OnExecuteClient( ActionData action_data )
- {
- ClearInventoryReservationEx(action_data);
- OnExecuteImpl(action_data);
- }
-
- override void OnExecuteServer( ActionData action_data )
- {
- if (GetGame().IsMultiplayer())
- return; // multiplayer handled on client side via OnExecuteClient
- else
- OnExecuteImpl(action_data); // single player
- }
-
- override void OnEndClient( ActionData action_data )
- {
- // Probably not needed since attaching is done server side.
- /*
- EntityAI target_entity = EntityAI.Cast( action_data.m_Target.GetObject() );
- EntityAI item_entity = EntityAI.Cast( action_data.m_MainItem );
-
- //find inventory location for attachment
- InventoryLocation target_location = new InventoryLocation;
-
- if( target_entity.GetInventory().FindFirstFreeLocationForNewEntity( item_entity.GetType(), FindInventoryLocationType.ATTACHMENT, target_location ) )
- {
- //target_entity.PredictiveTakeEntityToTargetAttachmentEx( target_entity, item_entity, target_location.GetSlot() );
- target_entity.LocalTakeEntityAsAttachmentEx( item_entity, target_location.GetSlot() );
- }
- */
- }
- }
|