19 #ifndef PLATFORM_CONSOLE
32 RecomputeOpenedContainers();
49 return ( ContainerWithCargo.Cast( GetFocusedContainer() ) != null );
54 return ( ContainerWithCargoAndAttachments.Cast( GetFocusedContainer() ) != null );
69 string type = entity.GetType();
70 if ( container.IsInherited( ContainerWithCargo ) )
72 if ( !serialized_types.Contains( type ) )
74 ContainerWithCargo item_with_cargo = ContainerWithCargo.Cast( container );
75 serialized_types.Insert( type, item_with_cargo.IsOpened() );
80 if ( serialized_types.Count() > 0 )
83 if ( file.
Open(
"inventory_state.save",
FileMode.APPEND ) )
85 file.
Write( serialized_types.Count() );
87 for ( i = 0; i < serialized_types.Count(); i++ )
89 file.
Write( serialized_types.GetKey( i ) );
90 file.
Write( serialized_types.GetElement( i ) );
107 string name = w.GetName();
108 name.Replace(
"PanelWidget",
"Render" );
128 #ifndef PLATFORM_CONSOLE
145 string name = receiver.GetName();
146 name.Replace(
"PanelWidget",
"Render");
154 name.Replace(
"PanelWidget",
"Render" );
204 string name = receiver.GetName();
205 name.Replace(
"PanelWidget",
"Render");
213 name.Replace(
"PanelWidget",
"Render" );
223 bool equal_typed = item.GetType() == receiver_item.GetType();
224 if ( !receiver_item.IsInherited(
ItemBase ) || item == null )
231 if ( !item.GetInventory().CanRemoveEntity() )
234 if ( (
ItemBase.Cast( receiver_item ) ).CanBeCombined(
ItemBase.Cast( item ) ) )
236 (
ItemBase.Cast( receiver_item ) ).CombineItemsClient(
ItemBase.Cast( item ) );
242 receiver_item.GetInventory().GetCurrentInventoryLocation( il1 );
243 item.GetInventory().GetCurrentInventoryLocation( il2 );
247 player.PredictiveSwapEntities( item, receiver_item );
252 PrepareOwnedTooltip(item);
257 menu.RefreshQuickbar();
283 string name = w.GetName();
284 name.Replace(
"PanelWidget",
"Render");
303 if (player.CanDropEntity(item))
308 if (itemBase.GetTargetQuantityMax() < itemBase.GetQuantity())
309 itemBase.SplitIntoStackMaxClient(null, -1);
311 player.PhysicalPredictiveDropItem(itemBase);
318 menu.RefreshQuickbar();
329 super.UpdateInterval();
332 vector pos = player.GetPosition();
340 bool isUsedMicromanagment =
false;
348 isUsedMicromanagment =
true;
354 for (
int i = 0; i < objects.Count(); i++ )
356 eai = objects.Get( i );
366 showable_items.Insert(eai);
379 isUsedMicromanagment =
false;
386 for ( i = 0; i < showable_items.Count(); i++ )
388 new_showed_items.Insert(showable_items[i],null);
392 bool need_update_focus =
false;
398 if ( !new_showed_items.Contains( ent ) )
400 if ( selectesItem && selectesItem.GetHierarchyRoot() == ent)
405 GetMainWidget().Update();
406 if ( con.IsActive() )
407 need_update_focus =
true;
418 bool accessInventory =
PlayerBase.DEBUG_INVENTORY_ACCESS;
419 accessInventory |= FreeDebugCamera.GetInstance() && FreeDebugCamera.GetInstance().IsActive();
423 new_showed_items.Clear();
425 for ( i = 0; i < showable_items.Count(); i++ )
427 EntityAI entity = showable_items.Get( i );
432 string config =
"CfgVehicles " + entity.GetType() +
" GUIInventoryAttachmentsProps";
434 if (
GetGame().ConfigIsExisting( config ) )
438 new_showed_items.Insert( entity, ac );
439 showed_items_IDs.Insert( entity.GetID(), ac);
441 else if ( entity.GetSlotsCountCorrect() > 0 && entity.GetInventory().GetCargo() )
445 if ( entity.IsAlive() )
451 new_showed_items.Insert( entity, zmb_cnt );
452 showed_items_IDs.Insert( entity.GetID(), zmb_cnt );
457 ContainerWithCargoAndAttachments iwca =
new ContainerWithCargoAndAttachments(
this, -1 );
458 iwca.SetEntity( entity,
false );
459 new_showed_items.Insert( entity, iwca );
460 showed_items_IDs.Insert( entity.GetID(), iwca );
463 else if ( entity.GetInventory().GetCargo() )
465 ContainerWithCargo iwc =
new ContainerWithCargo(
this, -1 );
466 iwc.SetEntity( entity, 0,
false );
467 new_showed_items.Insert( entity, iwc );
468 showed_items_IDs.Insert( entity.GetID(), iwc );
469 iwc.UpdateInterval();
471 else if ( entity.GetSlotsCountCorrect() > 0 )
473 if ( entity.HasEnergyManager() )
477 new_showed_items.Insert( entity, iwem );
478 showed_items_IDs.Insert( entity.GetID(), iwem );
485 if (accessInventory ==
false)
487 if ( entity.IsAlive() && ( !
PlayerBase.Cast( entity ).IsUnconscious() && !
PlayerBase.Cast( entity ).IsRestrained() ) )
497 new_showed_items.Insert( entity, plyr_cnt );
498 showed_items_IDs.Insert( entity.GetID(), plyr_cnt);
502 ContainerWithCargoAndAttachments iwcas =
new ContainerWithCargoAndAttachments(
this, -1 );
503 iwcas.SetEntity( entity,
false );
504 new_showed_items.Insert( entity, iwcas );
505 showed_items_IDs.Insert( entity.GetID(), iwcas );
506 iwcas.UpdateInterval();
520 if ( !accessInventory && entity.IsAlive() && ( !
PlayerBase.Cast( entity ).IsUnconscious() && !
PlayerBase.Cast( entity ).IsRestrained() ) )
522 GetMainWidget().Update();
523 if ( con.IsActive() )
524 need_update_focus =
true;
535 GetMainWidget().Update();
536 if ( con.IsActive() )
537 need_update_focus =
true;
544 new_showed_items.Insert( entity,
m_ShowedItems.Get( entity ) );
545 showed_items_IDs.Insert( entity.GetID(),
m_ShowedItemsIDs.Get( entity.GetID() ) );
553 for ( i = 0; i < cargoes.Count(); i++ )
560 ContainerWithCargo pxc =
new ContainerWithCargo(
this, -1 );
562 new_showed_cargos.Insert( cgo, pxc );
563 pxc.UpdateInterval();
579 if ( !new_showed_cargos.Contains( cgo2 ) )
582 if( con2.IsActive() )
583 need_update_focus =
true;
584 GetMainWidget().Update();
595 if (need_update_focus)
605 in.UpdateConsoleToolbar();
613 w.GetUserData(slots_icon);
664 w.GetScreenSize(
x,
y );
665 if ( w == GetMainWidget() )
667 GetMainWidget().Update();
675 if ( w == GetMainWidget() )
677 GetMainWidget().Update();
685 super.CollapseButtonOnMouseButtonDown(w);
void Inventory(LayoutHolder parent)
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
InventoryLocationType
types of Inventory Location
ref Widget m_RootWidget[MAX_SIMULTANIOUS_PLAYERS]
void SetEntity(EntityAI entity)
override bool IsPlayerInside(PlayerBase player, string selection)
proto native EntityAI GetCargoOwner()
get the entity that owns the cargo
proto native int GetOwnerCargoIndex()
represents base for cargo storage for entities
override bool IsDisplayable()
void CollapsibleContainer(LayoutHolder parent, int sort=-1)
override void Remove(LayoutHolder container)
ref CollapsibleHeader m_CollapsibleHeader
override Header GetHeader()
void UpdateCollapseButtons()
void SetColor(Widget w, int color)
static ColorManager GetInstance()
override EntityAI GetFocusedItem()
override Header GetHeader()
void ClosableContainer(LayoutHolder parent, int sort=-1)
override void SetEntity(EntityAI entity, bool immedUpdate=true)
override bool DisableVicinityIcon()
override bool IsInventoryVisible()
proto native bool Open(string path, FileMode mode=FileMode.READ)
proto native void Close()
Serializer API implementation for File IO. See Serializer for more info. usage:
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
proto native bool IsPlaceholderEntity(notnull Object e)
script counterpart to engine's class Inventory
proto native int GetType()
returns type of InventoryLocation
void SetSelectedItemEx(EntityAI selected_item, Container selected_container, LayoutHolder selected_icon)
void ShowSourceDropzone(EntityAI item)
void SetDefaultHeaderOpenState(string type, bool is_opened)
bool EvaluateContainerDragabilityDefault(EntityAI entity)
ScrollWidget GetLeftSlotsScroller()
EntityAI GetSelectedItem()
bool IsMicromanagmentMode()
void SetWidgetDraggable(Widget w, bool draggable)
void SetIsDragging(bool is_dragging)
static ItemManager GetInstance()
void SetPlayer(PlayerBase player)
proto bool Write(void value_out)
override bool OnChildAdd(Widget w, Widget child)
void OnDropReceivedFromEmptySpace(Widget w, int x, int y, Widget receiver)
void TraverseShowedItems()
override void CollapseButtonOnMouseButtonDown(Widget w)
const float DISTANCE_TO_THE_REST
void UpdateHeader(EntityAI entity, Container cont, PlayerBase player)
Updates header dragability to be consistent with current 'icon' behaviour.
void OnLeftPanelDropReceived(Widget w, int x, int y, Widget receiver)
ref VicinitySlotsContainer m_VicinityIconsContainer
ref map< int, ref Container > m_ShowedItemsIDs
bool IsContainerWithCargoActive()
override bool OnChildRemove(Widget w, Widget child)
override void UpdateInterval()
ref map< CargoBase, ref Container > m_ShowedCargos
bool IsVicinityContainerIconsActive()
void OnDropReceivedFromIcon(Widget w, int x, int y, Widget receiver)
void VicinityContainer(LayoutHolder parent, int sort=-1)
ref array< EntityAI > m_ShowedItemIcons
bool IsItemWithAttachmentsActive()
override void DraggingOverHeader(Widget w, int x, int y, Widget receiver)
const float DISTANCE_TO_ENTITIES
bool IsItemWithCategoriesActive()
void DraggingOverIcon(Widget w, int x, int y, Widget receiver)
ref map< EntityAI, ref Container > m_ShowedItems
void ToggleContainer(Widget w, EntityAI item)
void ToggleContainer(notnull Container conta)
override void ExpandCollapseContainer()
VicinitySlotsContainer GetVicinityIconsContainer()
override bool CanOpenCloseContainerEx(EntityAI focusedEntity)
override void OnDropReceivedFromHeader(Widget w, int x, int y, Widget receiver)
array< EntityAI > GetVicinityItems()
void Update(float delta_time)
array< CargoBase > GetVicinityCargos()
static VicinityItemManager GetInstance()
void SetEntity(EntityAI zombie_entity)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()