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 foreach (
EntityAI showableItem : showable_items)
407 new_showed_items.Insert(showableItem,null);
410 bool need_update_focus =
false;
413 cont.UpdateInterval();
414 if (!new_showed_items.Contains(ent))
416 if (selectesItem && selectesItem.GetHierarchyRoot() == ent)
420 GetMainWidget().Update();
422 need_update_focus =
true;
433 bool accessInventory =
PlayerBase.DEBUG_INVENTORY_ACCESS;
434 accessInventory |= FreeDebugCamera.GetInstance() && FreeDebugCamera.GetInstance().IsActive();
438 new_showed_items.Clear();
440 for ( i = 0; i < showable_items.Count(); i++ )
442 EntityAI entity = showable_items.Get( i );
447 string config =
"CfgVehicles " + entity.GetType() +
" GUIInventoryAttachmentsProps";
449 if (
g_Game.ConfigIsExisting( config ) )
453 new_showed_items.Insert( entity, ac );
454 showed_items_IDs.Insert( entity.GetID(), ac);
456 else if ( entity.GetSlotsCountCorrect() > 0 && entity.GetInventory().GetCargo() )
460 if ( entity.IsAlive() )
466 new_showed_items.Insert( entity, zmb_cnt );
467 showed_items_IDs.Insert( entity.GetID(), zmb_cnt );
472 ContainerWithCargoAndAttachments iwca =
new ContainerWithCargoAndAttachments(
this, -1 );
473 iwca.SetEntity( entity,
false );
474 new_showed_items.Insert( entity, iwca );
475 showed_items_IDs.Insert( entity.GetID(), iwca );
478 else if ( entity.GetInventory().GetCargo() )
480 ContainerWithCargo iwc =
new ContainerWithCargo(
this, -1 );
481 iwc.SetEntity( entity, 0,
false );
482 new_showed_items.Insert( entity, iwc );
483 showed_items_IDs.Insert( entity.GetID(), iwc );
484 iwc.UpdateInterval();
486 else if ( entity.GetSlotsCountCorrect() > 0 )
488 if ( entity.HasEnergyManager() )
492 new_showed_items.Insert( entity, iwem );
493 showed_items_IDs.Insert( entity.GetID(), iwem );
500 if (accessInventory ==
false)
502 if ( entity.IsAlive() && ( !
PlayerBase.Cast( entity ).IsUnconscious() && !
PlayerBase.Cast( entity ).IsRestrained() ) )
512 new_showed_items.Insert( entity, plyr_cnt );
513 showed_items_IDs.Insert( entity.GetID(), plyr_cnt);
517 ContainerWithCargoAndAttachments iwcas =
new ContainerWithCargoAndAttachments(
this, -1 );
518 iwcas.SetEntity( entity,
false );
519 new_showed_items.Insert( entity, iwcas );
520 showed_items_IDs.Insert( entity.GetID(), iwcas );
521 iwcas.UpdateInterval();
535 if ( !accessInventory && entity.IsAlive() && ( !
PlayerBase.Cast( entity ).IsUnconscious() && !
PlayerBase.Cast( entity ).IsRestrained() ) )
537 GetMainWidget().Update();
538 if ( con.IsActive() )
539 need_update_focus =
true;
550 GetMainWidget().Update();
551 if ( con.IsActive() )
552 need_update_focus =
true;
559 new_showed_items.Insert( entity,
m_ShowedItems.Get( entity ) );
560 showed_items_IDs.Insert( entity.GetID(),
m_ShowedItemsIDs.Get( entity.GetID() ) );
568 for ( i = 0; i < cargoes.Count(); i++ )
575 ContainerWithCargo pxc =
new ContainerWithCargo(
this, -1 );
577 new_showed_cargos.Insert( cgo, pxc );
578 pxc.UpdateInterval();
594 if ( !new_showed_cargos.Contains( cgo2 ) )
597 if( con2.IsActive() )
598 need_update_focus =
true;
599 GetMainWidget().Update();
610 if (need_update_focus)
620 in.UpdateConsoleToolbar();
623 #ifndef PLATFORM_CONSOLE
649 w.GetUserData(slots_icon);
700 w.GetScreenSize(
x,
y );
701 if ( w == GetMainWidget() )
703 GetMainWidget().Update();
711 if ( w == GetMainWidget() )
713 GetMainWidget().Update();
721 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.