10 #ifndef PLATFORM_CONSOLE
28 #ifndef PLATFORM_CONSOLE
36 if (!hasScrollerExactSize)
51 RecomputeOpenedContainers();
68 return ( ContainerWithCargo.Cast( GetFocusedContainer() ) != null );
73 return ( ContainerWithCargoAndAttachments.Cast( GetFocusedContainer() ) != null );
88 string type = entity.GetType();
89 if ( container.IsInherited( ContainerWithCargo ) )
91 if ( !serialized_types.Contains( type ) )
93 ContainerWithCargo item_with_cargo = ContainerWithCargo.Cast( container );
94 serialized_types.Insert( type, item_with_cargo.IsOpened() );
99 if ( serialized_types.Count() > 0 )
102 if ( file.
Open(
"inventory_state.save",
FileMode.APPEND ) )
104 file.
Write( serialized_types.Count() );
106 for ( i = 0; i < serialized_types.Count(); i++ )
108 file.
Write( serialized_types.GetKey( i ) );
109 file.
Write( serialized_types.GetElement( i ) );
126 string name = w.GetName();
127 name.Replace(
"PanelWidget",
"Render" );
147 #ifndef PLATFORM_CONSOLE
164 string name = receiver.GetName();
165 name.Replace(
"PanelWidget",
"Render");
173 name.Replace(
"PanelWidget",
"Render" );
223 string name = receiver.GetName();
224 name.Replace(
"PanelWidget",
"Render");
232 name.Replace(
"PanelWidget",
"Render" );
242 bool equal_typed = item.GetType() == receiver_item.GetType();
243 if ( !receiver_item.IsInherited(
ItemBase ) || item == null )
250 if ( !item.GetInventory().CanRemoveEntity() )
253 if ( (
ItemBase.Cast( receiver_item ) ).CanBeCombined(
ItemBase.Cast( item ) ) )
255 (
ItemBase.Cast( receiver_item ) ).CombineItemsClient(
ItemBase.Cast( item ) );
261 receiver_item.GetInventory().GetCurrentInventoryLocation( il1 );
262 item.GetInventory().GetCurrentInventoryLocation( il2 );
266 player.PredictiveSwapEntities( item, receiver_item );
271 PrepareOwnedTooltip(item);
276 menu.RefreshQuickbar();
302 string name = w.GetName();
303 name.Replace(
"PanelWidget",
"Render");
322 if (player.CanDropEntity(item))
327 if (itemBase.GetTargetQuantityMax() < itemBase.GetQuantity())
328 itemBase.SplitIntoStackMaxClient(null, -1);
330 player.PhysicalPredictiveDropItem(itemBase);
337 menu.RefreshQuickbar();
348 super.UpdateInterval();
351 vector pos = player.GetPosition();
359 bool isUsedMicromanagment =
false;
367 isUsedMicromanagment =
true;
373 for (
int i = 0; i < objects.Count(); i++ )
375 eai = objects.Get( i );
383 if (eai.IsInventoryVisible())
385 showable_items.Insert(eai);
398 isUsedMicromanagment =
false;
405 for ( i = 0; i < showable_items.Count(); i++ )
407 new_showed_items.Insert(showable_items[i],null);
411 bool need_update_focus =
false;
417 if ( !new_showed_items.Contains( ent ) )
419 if ( selectesItem && selectesItem.GetHierarchyRoot() == ent)
424 GetMainWidget().Update();
425 if ( con.IsActive() )
426 need_update_focus =
true;
437 bool accessInventory =
PlayerBase.DEBUG_INVENTORY_ACCESS;
438 accessInventory |= FreeDebugCamera.GetInstance() && FreeDebugCamera.GetInstance().IsActive();
442 new_showed_items.Clear();
444 for ( i = 0; i < showable_items.Count(); i++ )
446 EntityAI entity = showable_items.Get( i );
451 string config =
"CfgVehicles " + entity.GetType() +
" GUIInventoryAttachmentsProps";
453 if (
g_Game.ConfigIsExisting( config ) )
457 new_showed_items.Insert( entity, ac );
458 showed_items_IDs.Insert( entity.GetID(), ac);
460 else if ( entity.GetSlotsCountCorrect() > 0 && entity.GetInventory().GetCargo() )
464 if ( entity.IsAlive() )
470 new_showed_items.Insert( entity, zmb_cnt );
471 showed_items_IDs.Insert( entity.GetID(), zmb_cnt );
476 ContainerWithCargoAndAttachments iwca =
new ContainerWithCargoAndAttachments(
this, -1 );
477 iwca.SetEntity( entity,
false );
478 new_showed_items.Insert( entity, iwca );
479 showed_items_IDs.Insert( entity.GetID(), iwca );
482 else if ( entity.GetInventory().GetCargo() )
484 ContainerWithCargo iwc =
new ContainerWithCargo(
this, -1 );
485 iwc.SetEntity( entity, 0,
false );
486 new_showed_items.Insert( entity, iwc );
487 showed_items_IDs.Insert( entity.GetID(), iwc );
488 iwc.UpdateInterval();
490 else if ( entity.GetSlotsCountCorrect() > 0 )
492 if ( entity.HasEnergyManager() )
496 new_showed_items.Insert( entity, iwem );
497 showed_items_IDs.Insert( entity.GetID(), iwem );
504 if (accessInventory ==
false)
506 if ( entity.IsAlive() && ( !
PlayerBase.Cast( entity ).IsUnconscious() && !
PlayerBase.Cast( entity ).IsRestrained() ) )
516 new_showed_items.Insert( entity, plyr_cnt );
517 showed_items_IDs.Insert( entity.GetID(), plyr_cnt);
521 ContainerWithCargoAndAttachments iwcas =
new ContainerWithCargoAndAttachments(
this, -1 );
522 iwcas.SetEntity( entity,
false );
523 new_showed_items.Insert( entity, iwcas );
524 showed_items_IDs.Insert( entity.GetID(), iwcas );
525 iwcas.UpdateInterval();
539 if ( !accessInventory && entity.IsAlive() && ( !
PlayerBase.Cast( entity ).IsUnconscious() && !
PlayerBase.Cast( entity ).IsRestrained() ) )
541 GetMainWidget().Update();
542 if ( con.IsActive() )
543 need_update_focus =
true;
554 GetMainWidget().Update();
555 if ( con.IsActive() )
556 need_update_focus =
true;
563 new_showed_items.Insert( entity,
m_ShowedItems.Get( entity ) );
564 showed_items_IDs.Insert( entity.GetID(),
m_ShowedItemsIDs.Get( entity.GetID() ) );
572 for ( i = 0; i < cargoes.Count(); i++ )
579 ContainerWithCargo pxc =
new ContainerWithCargo(
this, -1 );
581 new_showed_cargos.Insert( cgo, pxc );
582 pxc.UpdateInterval();
598 if ( !new_showed_cargos.Contains( cgo2 ) )
601 if( con2.IsActive() )
602 need_update_focus =
true;
603 GetMainWidget().Update();
614 if (need_update_focus)
624 in.UpdateConsoleToolbar();
627 #ifndef PLATFORM_CONSOLE
653 w.GetUserData(slots_icon);
704 w.GetScreenSize(
x,
y );
705 if ( w == GetMainWidget() )
707 GetMainWidget().Update();
715 if ( w == GetMainWidget() )
717 GetMainWidget().Update();
725 super.CollapseButtonOnMouseButtonDown(w);
void Inventory(LayoutHolder parent)
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
void SetEntity(EntityAI entity)
override bool IsPlayerInside(PlayerBase player, string selection)
represents base for cargo storage for entities
proto native int GetOwnerCargoIndex()
proto native EntityAI GetCargoOwner()
get the entity that owns the cargo
override bool IsDisplayable()
override void Remove(LayoutHolder container)
void CollapsibleContainer(LayoutHolder parent, int sort=-1)
ref CollapsibleHeader m_CollapsibleHeader
void UpdateCollapseButtons()
override Header GetHeader()
static ColorManager GetInstance()
void SetColor(Widget w, int color)
void ClosableContainer(LayoutHolder parent, int sort=-1)
override Header GetHeader()
override EntityAI GetFocusedItem()
override void SetEntity(EntityAI entity, bool immedUpdate=true)
override bool DisableVicinityIcon()
Serializer API implementation for File IO.
proto native void Close()
proto native bool Open(string path, FileMode mode=FileMode.READ)
script counterpart to engine's class Inventory
proto native bool IsPlaceholderEntity(notnull Object e)
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
proto native int GetType()
returns type of InventoryLocation
EntityAI GetSelectedItem()
bool IsMicromanagmentMode()
void ShowSourceDropzone(EntityAI item)
void SetWidgetDraggable(Widget w, bool draggable)
void SetDefaultHeaderOpenState(string type, bool is_opened)
ScrollWidget GetLeftSlotsScroller()
void SetSelectedItemEx(EntityAI selected_item, Container selected_container, LayoutHolder selected_icon)
bool EvaluateContainerDragabilityDefault(EntityAI entity)
void SetIsDragging(bool is_dragging)
static ItemManager GetInstance()
override ScrollWidget GetScrollWidget()
void SetPlayer(PlayerBase player)
proto bool Write(void value_out)
ref map< int, ref Container > m_ShowedItemsIDs
ref map< EntityAI, ref Container > m_ShowedItems
override bool OnChildAdd(Widget w, Widget child)
void OnDropReceivedFromIcon(Widget w, int x, int y, Widget receiver)
const float VICINITY_CARGO_SCROLLER_HEIGHT_MID
void DraggingOverIcon(Widget w, int x, int y, Widget receiver)
bool IsItemWithCategoriesActive()
const float DISTANCE_TO_ENTITIES
void ToggleContainer(Widget w, EntityAI item)
override void UpdateInterval()
bool IsItemWithAttachmentsActive()
const float VICINITY_CARGO_SCROLLER_HEIGHT_MAX
void OnDropReceivedFromEmptySpace(Widget w, int x, int y, Widget receiver)
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)
ScrollWidget m_CargoScrollWidget
override void OnDropReceivedFromHeader(Widget w, int x, int y, Widget receiver)
const int ITEMS_PER_COLUMN_MAX
VicinitySlotsContainer GetVicinityIconsContainer()
ref VicinitySlotsContainer m_VicinityIconsContainer
override bool CanOpenCloseContainerEx(EntityAI focusedEntity)
override bool OnChildRemove(Widget w, Widget child)
void ToggleContainer(notnull Container conta)
void VicinityContainer(LayoutHolder parent, int sort=-1)
const float DISTANCE_TO_THE_REST
override void ExpandCollapseContainer()
override void DraggingOverHeader(Widget w, int x, int y, Widget receiver)
ref map< CargoBase, ref Container > m_ShowedCargos
override void CollapseButtonOnMouseButtonDown(Widget w)
ref array< EntityAI > m_ShowedItemIcons
bool IsContainerWithCargoActive()
bool IsVicinityContainerIconsActive()
void TraverseShowedItems()
const float VICINITY_CARGO_SCROLLER_HEIGHT_MIN
array< EntityAI > GetVicinityItems()
static VicinityItemManager GetInstance()
void Update(float delta_time)
array< CargoBase > GetVicinityCargos()
void SetEntity(EntityAI zombie_entity)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
InventoryLocationType
types of Inventory Location
ref Widget m_RootWidget[MAX_SIMULTANIOUS_PLAYERS]