ActionAttachPowerSourceToPanel.c
//!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 (g_Game.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() );
}
*/
}
}