5 protected int m_ActiveIndex = 0;
15 protected int m_FocusedColumn = 0;
22 const int SORT_ATTACHMENTS_OWN = 1;
23 const int SORT_CARGO_OWN = 2;
24 const int SORT_ATTACHMENTS_NEXT_OFFSET = 2;
25 const int SORT_CARGO_NEXT_OFFSET = 3;
50 if (m_ActiveIndex < m_OpenedContainers.Count())
52 return Container.Cast(m_OpenedContainers[m_ActiveIndex]);
59 if (index < m_Body.Count())
69 m_FocusedContainer = cont;
77 return c.GetFocusedSlotsIcon();
89 m_ActiveIndex = index;
124 if ( m_OpenedContainers.Count() > 0 )
126 m_ActiveIndex = m_OpenedContainers.Count() - 1;
153 UpdateSelectionIcons();
155 Inventory.GetInstance().UpdateConsoleToolbar();
160 ScrollWidget sw = GetScrollWidget();
163 ScrollToActiveContainer(sw);
166 #ifndef PLATFORM_CONSOLE
167 ScrollWidget ssw = GetSlotsScrollWidget();
170 ScrollToActiveContainer(ssw);
184 sw.GetScreenPos(
x,
y);
185 sw.GetScreenSize(
x, y_s);
189 float next_pos = f_y + f_h;
190 if (next_pos > (
y + y_s))
192 amount = sw.GetVScrollPos() + next_pos - (
y + y_s) + 2;
193 sw.VScrollToPos(amount);
197 amount = sw.GetVScrollPos() + f_y -
y - 2;
198 sw.VScrollToPos(amount);
206 ScrollWidget sw = GetScrollWidget();
209 CheckScrollbarVisibility(sw);
212 #ifndef PLATFORM_CONSOLE
213 ScrollWidget ssw = GetSlotsScrollWidget();
216 CheckScrollbarVisibility(ssw);
226 if (!sw.IsScrollbarVisible())
228 sw.VScrollToPos01(0.0);
230 else if (sw.GetVScrollPos01() > 1.0)
232 sw.VScrollToPos01(1.0);
239 UpdateSelectionIcons();
245 UpdateSelectionIcons();
262 icon.GetRadialIcon().Show(open);
263 icon.GetRadialIconClosed().Show(!open);
287 if( GetFocusedContainer() )
288 y = GetFocusedContainer().GetFocusedContainerHeight( contents );
289 else if( GetRootWidget() )
290 GetRootWidget().GetScreenSize(
x,
y );
294 if ( m_ActiveIndex == 0 )
308 if( GetFocusedContainer() )
309 y = GetFocusedContainer().GetFocusedContainerYPos( contents );
310 else if( GetRootWidget() )
311 GetRootWidget().GetPos(
x,
y );
319 if( GetFocusedContainer() )
320 y = GetFocusedContainer().GetFocusedContainerYScreenPos( contents );
321 else if( GetRootWidget() )
322 GetRootWidget().GetScreenPos(
x,
y );
327 if ( m_ActiveIndex == 0 )
340 return m_Body.Count();
345 if( GetFocusedContainer() )
346 return GetFocusedContainer().SelectItem();
352 if( GetFocusedContainer() )
353 return GetFocusedContainer().Select();
359 if(GetFocusedContainer())
361 return GetFocusedContainer().OnSelectButton();
368 if( GetFocusedContainer() )
369 return GetFocusedContainer().Combine();
375 if( GetFocusedContainer() )
376 return GetFocusedContainer().TransferItemToVicinity();
382 if( GetFocusedContainer() )
383 return GetFocusedContainer().TransferItem();
389 if( GetFocusedContainer() )
390 return GetFocusedContainer().InspectItem();
396 if (GetFocusedContainer())
398 return GetFocusedContainer().SplitItem();
412 if (GetFocusedContainer())
413 return GetFocusedContainer().EquipItem();
422 res =
GetGame().GetPlayer().PredictiveTakeOrSwapAttachment(ent);
441 if (GetFocusedContainer())
442 return GetFocusedContainer().CanOpenCloseContainerEx(focusedEntity);
444 return CanOpenCloseContainerEx(focusedEntity);
460 if (GetFocusedContainer())
461 return GetFocusedContainer().CanSplitEx(focusedEntity);
463 return CanSplitEx(focusedEntity);
476 if (GetFocusedContainer())
477 return GetFocusedContainer().CanSplitEx(focusedEntity);
479 return focusedEntity.CanBeSplit();
489 if (GetFocusedContainer())
490 return GetFocusedContainer().CanDropEx(focusedEntity);
492 return CanDropEx(focusedEntity);
510 return player.CanDropEntity(focusedEntity);
521 if (GetFocusedContainer())
522 return GetFocusedContainer().CanSwapOrTakeToHandsEx(focusedEntity);
524 return CanSwapOrTakeToHandsEx(focusedEntity);
538 EntityAI entityInHands = player.GetItemInHands();
554 return player.GetInventory().CanAddEntityIntoHands(focusedEntity);
565 if (GetFocusedContainer())
566 return GetFocusedContainer().CanEquipEx(focusedEntity);
568 return CanEquipEx(focusedEntity);
586 if (found && il.GetParent().GetInventory().FindAttachment(il.GetSlot()))
592 for (
int i = 0; i < focusedEntity.GetInventory().GetSlotIdCount(); i++)
594 int slot_id = focusedEntity.GetInventory().GetSlotId(i);
595 EntityAI slot_item = player.GetInventory().FindAttachment( slot_id );
596 if (slot_item && player.GetInventory().CanSwapEntitiesEx( focusedEntity, slot_item ))
613 if (GetFocusedContainer())
614 return GetFocusedContainer().CanTakeToInventoryEx(focusedEntity);
616 return CanTakeToInventoryEx(focusedEntity);
640 if (GetFocusedContainer())
641 return GetFocusedContainer().CanCombineEx(focusedEntity);
643 return CanCombineEx(focusedEntity);
657 if (focusedEntity != entityInHands)
667 if( GetFocusedContainer() )
668 return GetFocusedContainer().CanCombineAmmo();
680 if (focusedEntity.GetHierarchyRootPlayer() == player)
691 if ( CanAddToQuickbarEx(itemToAssign) )
695 dpi = player.GetDayZPlayerInventory();
697 if (itemToAssign && dpi && !dpi.IsProcessing())
699 RadialQuickbarMenu.SetItemToAssign(itemToAssign);
714 return m_OpenedContainers.Count() == 0;
719 if( GetFocusedContainer() )
720 return GetFocusedContainer().IsItemActive();
726 if( GetFocusedContainer() )
727 return GetFocusedContainer().IsItemWithQuantityActive();
734 if( GetFocusedContainer() )
735 item = GetFocusedContainer().GetFocusedItem();
743 if( GetFocusedContainer() )
744 item = GetFocusedContainer().GetFocusedContainerEntity();
750 return m_ColumnCount;
755 m_ColumnCount = count;
760 return m_FocusedColumn;
765 m_FocusedColumn = column;
770 for (
int i = 0; i < m_Body.Count(); i++ )
772 if ( m_Body.Get( i ) )
773 m_Body.Get( i ).UpdateInterval();
784 if (m_OpenedContainers.Count())
787 if (!m_OpenedContainers[m_ActiveIndex].
IsActive())
789 for (
int i = 0; i < m_OpenedContainers.Count() - 1; i++)
791 if (m_OpenedContainers[i].
IsActive())
793 m_OpenedContainers[i].SetActive(
false);
796 m_OpenedContainers[m_ActiveIndex].SetLastActive();
800 m_OpenedContainers[m_ActiveIndex].SetLastActive();
812 if (m_OpenedContainers.Count())
831 if (m_OpenedContainers.Count())
834 if (!m_OpenedContainers[m_ActiveIndex].
IsActive())
836 for (
int i = 1; i < m_OpenedContainers.Count(); i++)
838 if (m_OpenedContainers[i].
IsActive())
840 m_OpenedContainers[i].SetActive(
false);
843 m_OpenedContainers[m_ActiveIndex].SetActive(
true);
847 m_OpenedContainers[m_ActiveIndex].SetFirstActive();
863 super.SetActive( active );
869 if (m_MainWidget.FindAnyWidget(
"SelectedContainer"))
871 m_MainWidget.FindAnyWidget(
"SelectedContainer").Show(active);
879 if( m_OpenedContainers.Count() )
881 c =
Container.Cast(m_OpenedContainers.Get( m_ActiveIndex ));
890 c = GetFocusedContainer();
893 GetFocusedContainer().SetActive(
false);
903 for (
int i = 0; i <
Count(); i++ )
908 if (
Get(i) &&
Get(i).GetMainWidget())
909 Get( i ).GetMainWidget().GetUserData(icon);
919 if( GetFocusedContainer() )
922 GetFocusedContainer().UnfocusAll();
928 return m_ActiveIndex == ( m_OpenedContainers.Count() - 1 );
933 return m_ActiveIndex == 0;
938 return m_ActiveIndex == 0;
943 return m_ActiveIndex >= ( m_OpenedContainers.Count() - 1 );
948 if ( GetFocusedContainer() )
950 GetFocusedContainer().ResetFocusedContainer();
961 if (m_OpenedContainers.Count())
963 active =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
966 if (active && active.IsActive())
970 if (!active || !active.IsActive())
973 if (!IsLastContainerFocused())
977 next =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
996 if (m_OpenedContainers.Count())
998 active =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
1001 if (active && active.IsActive())
1006 if (!active || !active.IsActive())
1009 if (!IsFirstContainerFocused())
1013 prev =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
1031 if (m_OpenedContainers.Count())
1033 active =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
1045 if (m_OpenedContainers.Count())
1047 active =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
1060 if (m_OpenedContainers.Count())
1062 active =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
1065 if (active && active.IsActive())
1068 if (icon && icon.GetParent() &&
SlotsContainer.Cast(icon.GetParent()))
1074 agc.SetActive(
false);
1078 active.SetSameLevelNextActive();
1081 if (!active || !active.IsActive())
1083 if (!IsLastContainerFocused())
1086 next =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
1105 if (m_OpenedContainers.Count())
1107 active =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
1110 if (active && active.IsActive())
1113 if (icon && icon.GetParent() &&
SlotsContainer.Cast(icon.GetParent()))
1119 agc.SetActive(
false);
1123 active.SetSameLevelPreviousActive();
1126 if (!active || !active.IsActive())
1129 if (!IsFirstContainerFocused())
1133 prev =
Container.Cast(m_OpenedContainers[m_ActiveIndex]);
1150 m_OpenedContainers.Clear();
1152 bool need_reset_focus =
false;
1154 for (i = 0; i < m_Body.Count(); i++)
1159 c.RecomputeOpenedContainers();
1162 m_OpenedContainers.Insert(c);
1164 else if (c.IsActive())
1167 need_reset_focus =
true;
1176 if (!need_reset_focus && ( m_ActiveIndex >= m_OpenedContainers.Count() || !m_OpenedContainers[m_ActiveIndex].IsActive() ))
1178 need_reset_focus =
true;
1179 for (i = 0; i < m_OpenedContainers.Count(); i++)
1181 if (m_OpenedContainers[i].
IsActive())
1183 need_reset_focus =
false;
1189 if (need_reset_focus)
1203 if ( pos > -1 && pos < m_Body.Count() )
1205 if ( pos <= m_ActiveIndex )
1207 m_Body.InsertAt( container, pos );
1210 m_Body.Insert( container );
1220 int index = m_Body.Find( container );
1223 index = m_OpenedContainers.Find( container );
1226 if (index <= m_ActiveIndex)
1228 if (GetFocusedContainer() == container)
1237 m_OpenedContainers.RemoveItem( container );
1239 m_Body.RemoveItem( container );
1248 return m_Body.
Get(
x );
1253 for (
int i = 0; i < m_Body.Count(); i++ )
1255 if( m_Body.Get( i ) )
1256 m_Body.Get( i ).Refresh();
1262 for (
int i = 0; i < m_Body.Count(); i++ )
1278 m_ForcedHide = force_hide;
1280 for(
int i = 0; i < m_Body.Count(); i++)
1282 if( m_Body.Get( i ) )
1283 m_Body.Get( i ).OnHide();
1290 m_ForcedHide =
false;
1294 for(
int i = 0; i < m_Body.Count(); i++)
1296 if( m_Body.Get( i ) )
1297 m_Body.Get( i ).OnShow();
1304 m_ForcedShow = value;
void Inventory(LayoutHolder parent)
override void CheckHeaderDragability()
override void SetLastFocus()
override void SetActive(bool active)
override void SetNextActive()
override EntityAI GetFocusedItem()
override float GetFocusedContainerHeight(bool contents=false)
override bool IsDisplayable()
override void SetPreviousActive(bool force=false)
override Header GetHeader()
override float GetFocusedContainerYScreenPos(bool contents=false)
override void SetDefaultFocus(bool while_micromanagment_mode=false)
override void SetNextLeftActive()
override void SetLastActive()
override void SetNextRightActive()
script counterpart to engine's class Inventory
static bool CanSwapEntitiesEx(notnull EntityAI item1, notnull EntityAI item2)
static bool CanForceSwapEntitiesEx(notnull EntityAI item1, InventoryLocation item1_dst, notnull EntityAI item2, out InventoryLocation item2_dst)
static int GetCombinationFlags(EntityAI entity1, EntityAI entity2)
bool IsMicromanagmentMode()
static ItemManager GetInstance()
void Container(LayoutHolder parent)
bool CanCombineEx(EntityAI focusedEntity)
bool CanSwapOrTakeToHandsEx(EntityAI focusedEntity)
void SetSlotIcon(SlotsIcon icon)
void ExpandCollapseContainer()
override void UpdateInterval()
ref array< ref LayoutHolder > m_Body
override void SetFirstActive()
EntityAI GetFocusedContainerEntity()
ref array< LayoutHolder > m_OpenedContainers
Container GetContainer(int index)
float GetFocusedContainerYPos(bool contents=false)
EntityAI GetFocusedItem()
override void SetLayoutName()
override void SetLastActive()
void SetFocusedColumn(int column)
bool CanAddToQuickbarEx(EntityAI focusedEntity)
bool CanSwapOrTakeToHands()
ScrollWidget GetScrollWidget()
void ResetFocusedContainer()
bool CanTakeToInventory()
void SetFocusedContainer(Container cont)
void SetSameLevelNextActive()
void DraggingOver(Widget w, int x, int y, Widget receiver)
void SetPreviousActive(bool force=false)
bool TransferItemToVicinity()
bool CanOpenCloseContainer()
void ScrollToActiveContainer(ScrollWidget sw)
Container GetFocusedContainer()
void MoveGridCursor(int direction)
void ScrollToActiveContainer()
void CheckScrollbarVisibility()
void DraggingOverHeader(Widget w, int x, int y, Widget receiver)
bool IsItemWithQuantityActive()
void SetOpenForSlotIcon(bool open, SlotsIcon icon=null)
override void UpdateSelectionIcons()
bool IsLastContainerFocused()
void SetForceShow(bool value)
void HideContent(bool force_hide=false)
bool CanEquipEx(EntityAI focusedEntity)
void SetDefaultFocus(bool while_micromanagment_mode=false)
void Remove(LayoutHolder container)
void Insert(LayoutHolder container, int pos=-1, bool immedUpdate=true)
ScrollWidget GetSlotsScrollWidget()
bool AddItemToQuickbarRadial(EntityAI itemToAssign)
void ShowContent(bool force_show=false)
void RecomputeOpenedContainers()
void SetNextRightActive()
override void SetActive(bool active)
Container m_FocusedContainer
void SetHeader(Header header)
bool CanOpenCloseContainerEx(EntityAI focusedEntity)
bool CanDropEx(EntityAI focusedEntity)
void SetActiveIndex(int index)
bool CanTakeToInventoryEx(EntityAI focusedEntity)
void CheckHeaderDragability()
bool CanSplitEx(EntityAI focusedEntity)
void OnDropReceivedFromHeader(Widget w, int x, int y, Widget receiver)
bool IsFirstContainerFocused()
void SetColumnCount(int count)
void SetSameLevelPreviousActive()
void CheckScrollbarVisibility(ScrollWidget sw)
float GetFocusedContainerYScreenPos(bool contents=false)
SlotsIcon GetFocusedSlotsIcon()
float GetFocusedContainerHeight(bool contents=false)
Widget GetRadialIconPanel()
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
FindInventoryLocationType
flags for searching locations in inventory
ref Widget m_RootWidget[MAX_SIMULTANIOUS_PLAYERS]