25 RecomputeOpenedContainers();
50 bool show_radial_icon;
52 Widget rip = m_SlotIcon.GetRadialIconPanel();
53 Widget icon_open = m_SlotIcon.GetRadialIcon();
54 Widget icon_closed = m_SlotIcon.GetRadialIconClosed();
56 icon_open.Show( show_radial_icon );
57 icon_closed.Show( !show_radial_icon );
69 return GetFocusedContainer().IsInherited( ContainerWithCargo );
74 return GetFocusedContainer().IsInherited( ContainerWithCargoAndAttachments );
85 return ent && ( ent.GetInventory().GetCargo() || ent.GetSlotsCountCorrect() > 0 );
107 string name = w.GetName();
108 name.Replace(
"PanelWidget",
"Render" );
123 if( !item.GetInventory().CanRemoveEntity() )
126 if (
m_ZombieEntity.GetInventory().CanAddEntityInCargo( item, item.GetInventory().GetFlipCargo() ))
128 else if(
m_ZombieEntity.GetInventory().CanAddEntityToInventory( item ) )
137 string name = receiver.GetName();
138 name.Replace(
"PanelWidget",
"Render");
143 receiver_item = receiver_iw.
GetItem();
149 name.Replace(
"PanelWidget",
"Render");
165 if(!item.GetInventory().CanRemoveEntity())
172 string name = receiver.GetName();
173 name.Replace(
"PanelWidget",
"Render");
178 receiver_item = receiver_iw.
GetItem();
184 name.Replace(
"PanelWidget",
"Render" );
200 if(!item.GetInventory().CanRemoveEntity())
207 if(receiver_item.GetInventory().CanAddAttachment(item))
209 player.PredictiveTakeEntityToTargetAttachment(receiver_item, item);
212 else if(receiver_item.GetInventory().CanAddEntityInCargo(item, item.GetInventory().GetFlipCargo()) && !receiver_item.GetInventory().HasEntityInCargo(item))
223 player.PredictiveTakeEntityToTargetAttachment(
m_ZombieEntity, item);
225 else if(
m_ZombieEntity.GetInventory().CanAddEntityToInventory(item))
257 if( item.GetSlotsCountCorrect() > 0 )
259 ContainerWithCargoAndAttachments iwca =
new ContainerWithCargoAndAttachments(
this,
false );
260 iwca.SetEntity( item );
268 else if( item.GetInventory().GetCargo() )
270 ContainerWithCargo iwc =
new ContainerWithCargo(
this,
false );
271 iwc.SetEntity( item );
272 iwc.UpdateInterval();
282 string config =
"CfgVehicles " + item.GetType() +
" GUIInventoryAttachmentsProps";
285 bool show_radial_icon = ( item.GetInventory().GetCargo() || item.GetSlotsCountCorrect() > 0 ) && !
g_Game.ConfigIsExisting( config );
289 rip.Show( show_radial_icon );
291 icon_closed.Show( !conta.
IsOpened() );
293 RecomputeOpenedContainers();
307 (
Container.Cast( con.m_Parent ) ).Remove( con );
308 RecomputeOpenedContainers();
309 GetMainWidget().Update();
317 in.UpdateConsoleToolbar();
364 RecomputeOpenedContainers();
380 #ifdef DIAG_DEVELOPER
382 ShowActionMenu(selectedItem);
387 InspectItem(selectedItem);
391 if (
g_Game.IsLeftCtrlDown())
394 if (controlledPlayer.CanDropEntity(selectedItem))
396 if (selectedItem.GetTargetQuantityMax() < selectedItem.GetQuantity())
397 selectedItem.SplitIntoStackMaxClient(null, -1);
399 controlledPlayer.PhysicalPredictiveDropItem(selectedItem);
418 bool has_cargo =
m_ZombieEntity.GetInventory().GetCargo() != null;
420 string config_path_ghosts_slots =
"CfgVehicles ZombieBase InventoryEquipment playerSlots";
422 g_Game.ConfigGetTextArray( config_path_ghosts_slots, player_ghosts_slots );
424 for (
int i = 0; i < player_ghosts_slots.Count(); i++ )
426 string slot_name = player_ghosts_slots.Get ( i );
427 string path =
"CfgSlots" +
" " + slot_name;
432 g_Game.ConfigGetText(
path +
" ghostIcon", icon_name );
441 if( row < ( (player_ghosts_slots.Count() + 1 )/
ITEMS_IN_ROW ) )
449 if ( row < ( player_ghosts_slots.Count() /
ITEMS_IN_ROW ) )
459 icon.GetMainWidget().Show(
true );
475 g_Game.ConfigGetText(
path +
" name", slot_name );
495 if( row < ( player_ghosts_slots.Count() + 1 /
ITEMS_IN_ROW ) )
502 icon.GetMainWidget().Show(
true );
510 m_CargoGrid =
new ContainerWithCargo(
this,
false );
517 RecomputeOpenedContainers();
523 s_cont.SetColumnCount( row_count );
532 return m_Container.Get( row ).GetMainWidget().FindAnyWidget(
"Render" + column );
546 string name = w.GetName();
547 name.Replace(
"PanelWidget",
"Render" );
564 if( player.GetInventory().HasInventoryReservation( item, null ) || player.IsItemsToDelete() )
569 if( !item.GetInventory().CanRemoveEntity() )
572 if ( player.GetInventory().HasEntityInInventory( item ) &&
g_Game.GetPlayer().GetHumanInventory().CanAddEntityInHands( item ) )
574 player.PredictiveTakeEntityToHands( item );
581 if( item.GetTargetQuantityMax(il.
GetSlot()) < item.GetQuantity() )
582 item.SplitIntoStackMaxToInventoryLocationClient( il );
586 else if(
g_Game.GetPlayer().GetHumanInventory().CanAddEntityInHands( item ) )
588 if( item.GetTargetQuantityMax() < item.GetQuantity() )
589 item.SplitIntoStackMaxHandsClient( player );
591 player.PredictiveTakeEntityToHands( item );
599 menu.RefreshQuickbar();
606 super.CollapseButtonOnMouseButtonDown(w);
613 if ( GetFocusedContainer().IsInherited( ContainerWithCargo ) || GetFocusedContainer().IsInherited( ContainerWithCargoAndAttachments ) )
615 return GetFocusedContainer().EquipItem();
634 if (CanTakeToInventory())
639 if (GetFocusedContainer().IsInherited( ContainerWithCargo ) || GetFocusedContainer().IsInherited( ContainerWithCargoAndAttachments ))
641 return GetFocusedContainer().TransferItem();
655 if (!GetFocusedContainer().IsInherited( ContainerWithCargo ) && !GetFocusedContainer().IsInherited( ContainerWithCargoAndAttachments ))
671 if( GetFocusedContainer().IsInherited( ContainerWithCargo ) || GetFocusedContainer().IsInherited( ContainerWithCargoAndAttachments ) )
673 return GetFocusedContainer().Select();
684 if( selected_item != focused_item)
686 if( selected_item.GetInventory().CanRemoveEntity() )
696 if( focused_item && focused_item.GetInventory().CanRemoveEntity() )
699 if( item_in_hands && item_in_hands.GetInventory().CanRemoveEntity() )
703 g_Game.GetPlayer().PredictiveSwapEntities( item_in_hands, focused_item );
713 if (
g_Game.GetPlayer().NeedInventoryJunctureFromServer(item_in_hands, item_in_hands.GetHierarchyParent(), il_hands_dst.
GetParent()) ||
g_Game.GetPlayer().NeedInventoryJunctureFromServer(focused_item, focused_item.GetHierarchyParent(),
g_Game.GetPlayer()) )
716 g_Game.GetPlayer().GetHumanInventory().ForceSwapEntities(
InventoryMode.JUNCTURE, focused_item, item_in_hands, il_hands_dst );
723 if(
g_Game.GetPlayer().GetHumanInventory().CanAddEntityInHands( focused_item ) )
725 g_Game.GetPlayer().PredictiveTakeEntityToHands( focused_item );
740 if ( GetFocusedContainer().IsInherited( ContainerWithCargo ) || GetFocusedContainer().IsInherited( ContainerWithCargoAndAttachments ) )
742 return GetFocusedContainer().TransferItemToVicinity();
746 Man player =
g_Game.GetPlayer();
748 if( item && player.CanDropEntity( item ) )
750 if( item.GetTargetQuantityMax() < item.GetQuantity() )
751 item.SplitIntoStackMaxClient( null, -1 );
753 player.PhysicalPredictiveDropItem( item );
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
void Inventory(LayoutHolder parent)
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
override bool IsDisplayable()
void CollapsibleContainer(LayoutHolder parent, int sort=-1)
ref CollapsibleHeader m_CollapsibleHeader
override Header GetHeader()
override void SetHeader(Header header)
void ClosableContainer(LayoutHolder parent, int sort=-1)
override EntityAI GetFocusedItem()
script counterpart to engine's class Inventory
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
proto native int GetSlot()
returns slot id if current type is Attachment
proto native EntityAI GetParent()
returns parent of current inventory location
provides access to slot configuration
static proto native int GetSlotIdFromString(string slot_name)
static proto native owned string GetSlotDisplayName(int id)
EntityAI GetSelectedItem()
void SetWidgetDraggable(Widget w, bool draggable)
void SetSelectedItemEx(EntityAI selected_item, Container selected_container, LayoutHolder selected_icon)
SlotsIcon GetSelectedIcon()
static ItemManager GetInstance()
static int HasItemQuantity(notnull EntityAI item)
SlotsIcon GetSlotIcon(int index)
Widget GetRadialIconClosed()
void SetSlotDisplayName(string text)
Widget GetRadialIconPanel()
ImageWidget GetGhostSlot()
void SetSlotID(int slot_ID)
void Init(EntityAI obj, bool reservation=false)
void SetContainer(Container container)
static const int IMAGESETGROUP_INVENTORY
static string VerifyIconImageString(int imageset_group=IMAGESETGROUP_INVENTORY, string icon_name="")
Checks for improperly formated, legacy image names and corrects them to default format.
ref map< EntityAI, ref Container > m_ShowedItems
ref AttachmentsGroupContainer m_Container
ref ContainerWithCargo m_CargoGrid
void SetEntity(EntityAI zombie_entity)
void ToggleContainer(Widget w)
void OnDropReceivedFromGhostArea(Widget w, int x, int y, Widget receiver)
bool IsItemWithAttachmentsActive()
override bool TransferItem()
override bool TransferItemToVicinity()
override void OnDropReceivedFromHeader(Widget w, int x, int y, Widget receiver)
override bool CanOpenCloseContainerEx(EntityAI focusedEntity)
override void UpdateRadialIcon()
void MouseClick(Widget w, int x, int y, int button)
ref map< int, SlotsIcon > m_InventorySlots
void DoubleClick(Widget w, int x, int y, int button)
void ZombieContainer(LayoutHolder parent, int sort=-1)
override void ExpandCollapseContainer()
Widget GetWidgetSlot(int slot_number)
override void DraggingOverHeader(Widget w, int x, int y, Widget receiver)
SlotsIcon GetSlotsIcon(int row, int column)
override bool EquipItem()
override bool IsItemWithQuantityActive()
bool IsItemWithContainerActive()
void AddSlotsContainer(int row_count)
override void CollapseButtonOnMouseButtonDown(Widget w)
void ItemAttached(EntityAI item, string slot_name)
void ItemDetached(EntityAI item, string slot_name)
bool IsZombieEquipmentActive()
bool IsContainerWithCargoActive()
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
FindInventoryLocationType
flags for searching locations in inventory
ref Widget m_RootWidget[MAX_SIMULTANIOUS_PLAYERS]