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
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()
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()
override ScrollWidget GetScrollWidget()
void SetPlayer(PlayerBase player)
proto bool Write(void value_out)
override bool OnChildAdd(Widget w, Widget child)
ScrollWidget m_CargoScrollWidget
void OnDropReceivedFromEmptySpace(Widget w, int x, int y, Widget receiver)
const int ITEMS_PER_COLUMN_MAX
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
const float VICINITY_CARGO_SCROLLER_HEIGHT_MID
ref map< int, ref Container > m_ShowedItemsIDs
bool IsContainerWithCargoActive()
override bool OnChildRemove(Widget w, Widget child)
override void UpdateInterval()
const float VICINITY_CARGO_SCROLLER_HEIGHT_MIN
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)
const float VICINITY_CARGO_SCROLLER_HEIGHT_MAX
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.