69 SCR_InventoryStorageManagerComponent m_pStorageMan;
71 BaseInventoryStorageComponent m_pStorageToDrop;
72 BaseInventoryStorageComponent m_pStorageToPickUp;
80 bool m_bUpdateSlotOnly;
81 bool m_bShouldUpdateQuickSlots;
85 void InternalComplete()
100 if (m_pMenu && m_pItem && m_bShouldEquip)
102 m_pMenu.GetCharacterController().TryEquipRightHandItem(m_pItem,
EEquipItemType.EEquipTypeWeapon,
false);
103 m_bShouldEquip =
false;
107 m_pMenu.Action_DeselectItem();
113 if (m_pMenu && m_pItem && m_bShouldEquip)
115 m_pMenu.GetCharacterController().TryEquipRightHandItem(m_pItem,
EEquipItemType.EEquipTypeWeapon,
false);
116 m_bShouldEquip =
false;
127 m_pStorageMan.PlayItemSound(m_pItem,
SCR_SoundEvent.SOUND_UNEQUIP);
132 bool shouldUpdateStorageList;
133 if ( m_pStorageFrom )
137 if ( m_pStorageFrom == m_pMenu.GetStorageList() )
139 shouldUpdateStorageList =
true;
143 if (m_bUpdateSlotOnly)
145 m_pStorageFrom.UpdateSlotUI(m_sItemToFocus);
146 m_bUpdateSlotOnly =
false;
150 BaseInventoryStorageComponent storage = m_pStorageFrom.GetCurrentNavigationStorage();
151 auto open = m_pMenu.GetOpenedStorage(storage);
157 auto itemStorage = BaseInventoryStorageComponent.Cast(m_pItem.FindComponent(BaseInventoryStorageComponent));
158 open = m_pMenu.GetOpenedStorage(itemStorage);
164 m_pStorageFrom.Refresh();
173 shouldUpdateStorageList =
true;
181 if ( m_pStorageTo == m_pMenu.GetStorageList() )
183 shouldUpdateStorageList =
true;
185 auto itemStorage = BaseInventoryStorageComponent.Cast(m_pItem.FindComponent(BaseInventoryStorageComponent));
192 m_pStorageTo.Refresh();
193 BaseInventoryStorageComponent storage = m_pStorageTo.GetCurrentNavigationStorage();
194 auto open = m_pMenu.GetOpenedStorage(storage);
205 if (inventoryItemComp)
206 parentSlot = inventoryItemComp.GetParentSlot();
208 SCR_HandSlotStorageComponent handSlotStorage;
210 handSlotStorage = SCR_HandSlotStorageComponent.Cast(parentSlot.GetStorage());
213 handSlotStorage.SkipAnimation_S();
216 if (shouldUpdateStorageList)
218 m_pMenu.ShowStoragesList();
219 m_pMenu.ShowAllStoragesInList();
224 if ( m_pStorageFrom != m_pMenu.GetLootStorage() && m_pStorageTo != m_pMenu.GetLootStorage() )
225 m_pMenu.RefreshLootUIListener();
231 pStorage = m_pMenu.GetStorageList();
235 m_pMenu.NavigationBarUpdate();
236 m_pMenu.RefreshPlayerWidget();
239 if (m_pStorageToFocus)
241 m_pMenu.FocusOnSlotInStorage(m_pStorageToFocus, m_iSlotToFocus);
248 if (m_pStorageToDrop)
250 if (m_pMenu && m_bShouldUpdateQuickSlots)
251 m_pMenu.ShowQuickSlotStorage();
252 m_pStorageToDrop = null;
255 if (m_pStorageToPickUp)
257 if (m_pMenu && m_bShouldUpdateQuickSlots)
258 m_pMenu.ShowQuickSlotStorage();
259 m_pStorageToPickUp = null;
262 m_bShouldUpdateQuickSlots =
false;
270 m_pStorageToFocus = null;
272 m_pStorageFrom = null;
288 #ifndef DISABLE_INVENTORY
322 protected ref array<SCR_InventorySlotUI>
m_aShownStorages =
new array<SCR_InventorySlotUI>();
332 const string ARSENAL_STORAGE_LAYOUT =
"{5C4812D758C0EDB8}UI/layouts/Menus/Inventory/SupplyInventoryContainerGrid.layout";
335 const string STORAGES_LIST_LAYOUT =
"{FC579324F5E4B3A4}UI/layouts/Menus/Inventory/InventoryCharacterGrid.layout";
336 const string ITEM_INFO =
"{7BA9AFEC71DAC3CF}UI/layouts/Menus/Inventory/InventoryInfo.layout";
337 const string DAMAGE_INFO =
"{55AFA256E1C20FB2}UI/layouts/Menus/Inventory/InventoryDamageInfo.layout";
343 [
Attribute(
"{01E150D909447632}Configs/Damage/DamageStateConfig.conf",
desc:
"Config to get visual data from",
params:
"conf class=SCR_DamageStateConfig")]
349 protected string m_sFSMStatesNames[10]={
"init",
"idle",
"item selected",
"storage selected",
"STATE_STORAGE_OPENED",
"storage unfolded",
"move started",
"move finished",
"closing",
"STATE_UNKNOWN" };
488 const Widget morphineTimer =
m_widget.FindAnyWidget(
"MorphineTimer");
526 if (startingTheProcess)
564 point.GetRootWidget().RemoveFromHierarchy();
632 const bool bleedingVisible = (charBloodHZ.GetHealthScaled() <= charBloodHZ.GetDamageStateThreshold(
ECharacterBloodState.STRONG));
633 float bleedingAmount =
Math.InverseLerp(
636 charBloodHZ.GetHealthScaled());
647 bool visible =
false;
650 array<ref SCR_PersistentDamageEffect> effects = {};
665 array<ref SCR_PersistentDamageEffect> effects = {};
830 super.OnMenuUpdate(tDelta);
839 GetGame().GetInputManager().ActivateContext(
"InventoryPagingContext");
841 GetGame().GetInputManager().ActivateContext(
"InventoryMenuContext");
880 Math3D.MatrixIdentity4(transform);
886 if (
m_wPlayerRender.TryGetItemNodePositionInWidgetSpace(
id, transform, screenPos))
973 Print(
"Cannot find AttachmentSpinBox widget in hierarchy!",
LogLevel.ERROR);
1015 previouslyFocusedStorage.ShowContainerBorder(
false);
1034 const bool shouldBeActive = (enable && (itemCount > 0));
1039 rootWidget.SetVisible(shouldBeActive);
1042 const Widget rightArea =
m_widget.FindAnyWidget(
"StoragesListSlot");
1065 array<SCR_InventorySlotUI> slots = {};
1067 return slots.IsIndexValid(slotIndex);
1080 array<SCR_InventorySlotUI> slots = {};
1083 if (slots.IsEmpty())
1093 if (!slots.IsIndexValid(slotIndex))
1101 if (!button || !button.IsEnabled())
1114 GetGame().GetWorkspace().SetFocusedWidget(button);
1131 if (!uiSlot || !uiSlot.IsSlotEnabled())
1134 button = uiSlot.GetButtonWidget();
1135 if (button && button.IsEnabled())
1155 loading.SetVisible(
true);
1160 PlayerController playerController =
GetGame().GetPlayerController();
1161 if ( playerController != null )
1175 GetGame().SpawnEntityPrefabLocal(rsc, world);
1193 m_InventoryManager = SCR_InventoryStorageManagerComponent.Cast(
m_Player.FindComponent( SCR_InventoryStorageManagerComponent ) );
1215 if (itemOfInterest && itemOfInterest.IsInherited(SCR_ChimeraCharacter))
1217 SCR_ChimeraCharacter character = SCR_ChimeraCharacter.Cast(itemOfInterest);
1255 if (itemOfInterest && itemOfInterest.IsInherited(SCR_ChimeraCharacter))
1257 SCR_ChimeraCharacter character = SCR_ChimeraCharacter.Cast(itemOfInterest);
1280 case "Inventory_UnassignFromQuickSlot":
1285 case "Inventory_EnterStorage":
1290 case "Inventory_AssignToQuickSlot":
1295 case "Inventory_Drop":
1300 case "Inventory_Equip":
1305 case "Inventory_Select":
1324 case "Inventory_Deselect":
1329 case "Inventory_OpenStorage":
1334 case "Inventory_OpenNewStorage":
1339 case "Inventory_StepBack":
1344 case "Inventory_Inspect":
1349 case "Inventory_Use":
1354 case "Inventory_Move":
1370 case "Inventory_Swap":
1381 case "Inventory_DetachItem":
1388 case "InventoryEscape":
1409 Widget w = pStorageUI.GetRootWidget();
1423 if ( !storageUIHandler )
1426 int iLastShownPage = storageUIHandler.GetLastShownPage();
1428 w.RemoveHandler( storageUIHandler );
1429 w.RemoveFromHierarchy();
1431 return iLastShownPage;
1438 BaseInventoryStorageComponent pStorage = pSlot.GetAsStorage();
1444 pStorageUI.ToggleShow();
1454 array<SCR_UniversalInventoryStorageComponent> pStorages =
new array<SCR_UniversalInventoryStorageComponent>();
1457 if( pStorages.Count() == 0 )
1484 if ( storage.Type() == ClothNodeStorageComponent )
1508 Print(
"No vicnity component on character!",
LogLevel.DEBUG);
1542 const Widget parent =
m_widget.FindAnyWidget(
"AttachmentStorage");
1583 if (openedStorage.GetStorage() == storage)
1601 newStorage.AddHandler(handler);
1608 scroll.SetSliderPos(0, 0);
1615 if (hideCloseButton)
1619 closeButton.SetVisible(
false);
1648 vector entityBoundsMaxs, entityBoundsMins;
1657 Vehicle vehicleRoot =
Vehicle.Cast(storageUI.GetStorage().GetOwner().GetRootParent());
1659 vehicleRoot.GetWorldBounds(entityBoundsMins, entityBoundsMaxs);
1662 storageUI.GetStorage().GetOwner().GetWorldBounds(entityBoundsMins, entityBoundsMaxs);
1665 if (entityBoundsMins - entityBoundsMaxs ==
vector.Zero && !vehicleRoot)
1668 if (storageUI.GetStorage().GetOwner().GetParent())
1669 storageUI.GetStorage().GetOwner().GetParent().GetWorldBounds(entityBoundsMins, entityBoundsMaxs);
1672 if (entityBoundsMins - entityBoundsMaxs ==
vector.Zero)
1674 Print(
"SCR_InventoryMenuUI: RefreshLootUIListener storage owner has no bounds and it could not find a valid parent with bounds!",
LogLevel.ERROR);
1707 BaseInventoryStorageComponent lastFocusedStorage;
1708 int lastFocusedSlotId = -1;
1722 array<SCR_InventorySlotUI> aSlotsUI = {};
1742 BaseInventoryStorageComponent pStorage = pSlot.GetAsStorage();
1747 if (pStorage != lastFocusedStorage)
1750 if (lastFocusedSlotId > -1)
1767 array<SCR_InventorySlotUI> slots = {};
1771 if (slot && slot.GetStorageComponent() == storage)
1772 return slot.GetStorageUI();
1781 IEntity storageOwner = storage.GetOwner();
1783 SCR_ArsenalInventoryStorageManagerComponent arsenalManagerComponent
1784 = SCR_ArsenalInventoryStorageManagerComponent.Cast(storageOwner.
FindComponent(SCR_ArsenalInventoryStorageManagerComponent));
1786 if (arsenalManagerComponent)
1789 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(storageOwner);
1791 if (resourceComponent)
1818 BaseInventoryStorageComponent parentStorage;
1820 if (pStorage && pStorage.GetParentSlot())
1821 parentStorage = pStorage.GetParentSlot().GetStorage();
1823 if (ClothNodeStorageComponent.Cast(parentStorage))
1827 if (pStorageUI && pStorageUI.GetStorage() == parentStorage)
1834 if (pStorageUI && pStorageUI.GetStorage() == pStorage)
1840 if (pStorageUI && pStorageUI.GetStorage() == pStorage)
1850 array<SCR_InventorySlotUI> tmpSlots = {};
1851 tmpSlots.Copy( aSlots );
1858 aSlots.Insert(pSlotUI);
1887 bool arsenalCostSet;
1897 arsenalCostSet =
true;
1925 bool isNonRefundable;
1926 bool nonrefundableItemInStorage =
false;
1931 isNonRefundable =
true;
1934 if (!isNonRefundable)
1936 BaseInventoryStorageComponent storage =
m_pStorageLootUI.GetCurrentNavigationStorage();
1942 bool isSupplyStorageAvailable;
1943 float supplyRefundAmount = SCR_ArsenalManagerComponent.GetItemRefundAmount(
m_pFocusedSlotUI.GetInventoryItemComponent().GetOwner(), arsenalComp,
true, isSupplyStorageAvailable: isSupplyStorageAvailable);
1945 if (supplyRefundAmount >= 0)
1957 IEntity itemEntity = item.GetOwner();
1960 SCR_ArsenalManagerComponent arsenalManager;
1961 if (SCR_ArsenalManagerComponent.GetArsenalManager(arsenalManager))
1980 SCR_ItemOutfitFactionComponent outfitFaction = SCR_ItemOutfitFactionComponent.Cast(itemInventory.GetOwner().
FindComponent(SCR_ItemOutfitFactionComponent));
1981 if (outfitFaction && outfitFaction.IsValid())
1983 array<SCR_OutfitFactionData> outfitValues = {};
1984 outfitFaction.GetOutfitFactionDataArray(outfitValues);
1988 foreach (SCR_OutfitFactionData
data : outfitValues)
1994 hintsInfo.Insert(foundInfo);
2001 SCR_IdentityInventoryItemComponent identityInventoryItem = SCR_IdentityInventoryItemComponent.Cast(
m_pFocusedSlotUI.GetInventoryItemComponent().GetOwner().FindComponent(SCR_IdentityInventoryItemComponent));
2002 if (identityInventoryItem && identityInventoryItem.HasValuableIntel(
true))
2034 if (uiInfo && uiInfo.IsIconVisible())
2035 m_pItemInfo.SetIcon(uiInfo.GetIconPath(), uiInfo.GetIconColor());
2039 array<SCR_InventoryItemHintUIInfo> hintsInfo = {};
2043 uiInfo.GetItemHintArray(hintsInfo);
2050 if (!hintsInfo.IsEmpty())
2074 w.GetScreenPos(x, y);
2076 float width, height;
2077 w.GetScreenSize(width, height);
2078 if (!postponed && x == 0 && y == 0 && width == 0 && height == 0)
2091 float screenSizeX, screenSizeY;
2092 GetGame().GetWorkspace().GetScreenSize(screenSizeX, screenSizeY);
2094 float infoWidth, infoHeight;
2095 m_pItemInfo.GetInfoWidget().GetScreenSize(infoWidth, infoHeight);
2098 int targetPosY = y + height;
2100 float offsetX = (screenSizeX - infoWidth - targetPosX);
2102 targetPosX += offsetX;
2103 float offsetY = (screenSizeY - infoHeight - targetPosY);
2105 targetPosY += offsetY;
2108 GetGame().GetWorkspace().DPIUnscale(targetPosX),
2109 GetGame().GetWorkspace().DPIUnscale(targetPosY));
2119 if (currentHZContainer)
2120 w = currentHZContainer.
GetRootWidget().FindAnyWidget(
"HitZoneButton");
2144 m_pDamageInfo.SetDamageStateVisible(damageInfo.m_bDamageIconVisible, damageInfo.m_bDamageRegenerating, damageInfo.m_sDamageIntensity, damageInfo.m_sDamageText);
2145 m_pDamageInfo.SetBleedingStateVisible(damageInfo.m_bBleedingIconVisible, damageInfo.m_sBleedingText);
2146 m_pDamageInfo.SetTourniquetStateVisible(damageInfo.m_bTourniquetIconVisible);
2147 m_pDamageInfo.SetSalineBagStateVisible(damageInfo.m_bSalineBagIconVisible);
2148 m_pDamageInfo.SetFractureStateVisible(damageInfo.m_bFractureIconVisible, damageInfo.m_bFractureIcon2Visible);
2151 int iMouseX, iMouseY;
2154 w.GetScreenPos(x, y);
2156 float width, height;
2157 w.GetScreenSize(width, height);
2159 float screenSizeX, screenSizeY;
2160 GetGame().GetWorkspace().GetScreenSize(screenSizeX, screenSizeY);
2162 float infoWidth, infoHeight;
2163 m_pDamageInfo.GetInfoWidget().GetScreenSize(infoWidth, infoHeight);
2166 iMouseY = y + height;
2167 if (x + infoWidth > screenSizeX)
2168 iMouseX = screenSizeX - infoWidth - width * 0.5;
2216 if ( !( pInputManager && pInputManager.IsUsingMouseAndKeyboard() ) )
2223 pFromStorageUI.SetSlotFocused(pLastFocusedSlot);
2272 UIInfo itemInfo = attribs.GetUIInfo();
2282 ShowItemInfo( itemInfo.GetName(), itemInfo.GetDescription(), invItemComp.GetTotalWeight(), null);
2303 if (!slot1 || !slot2)
2315 if (!slot1 || !slot2)
2327 if (!slot1 || !slot2)
2393 IEntity item = itemComp.GetOwner();
2397 bool isItemInCharacter;
2417 BaseInventoryStorageComponent desiredStorage =
m_pStorageLootUI.GetCurrentNavigationStorage();
2419 bool isTargetingArsenal = isItemInCharacter &&
IsStorageArsenal(desiredStorage);
2427 isTargetingArsenal =
false;
2430 isTargetingArsenal =
false;
2472 bool isItemInCharacter;
2475 focusedItem = iic.GetOwner();
2494 isTargetingDifferentStorage = isTargetingDifferentSlot;
2505 shouldShowMove &=
m_pActiveStorageUI.IsStorageHighlighted() && (transferringSupplies || isTargetingDifferentStorage);
2532 return item.FindComponent(SCR_WeaponAttachmentsStorageComponent);
2543 BaseInventoryStorageComponent storage;
2550 storage = storageUI.GetStorage();
2577 IEntity item = itemComp.GetOwner();
2584 weaponComp.GetWeaponType() !=
EWeaponType.WT_FRAGGRENADE &&
2585 weaponComp.GetWeaponType() !=
EWeaponType.WT_SMOKEGRENADE &&
2586 weaponComp.Type() != SCR_MineWeaponComponent)
2606 sAction =
"#AR-Inventory_Move";
2656 if (!resourceInventoryComp)
2659 IEntity entityFrom = dialog.GetEntityFrom();
2660 IEntity entityTo = dialog.GetEntityTo();
2662 SCR_ResourceComponent resourceComponentFrom = SCR_ResourceComponent.FindResourceComponent(entityFrom);
2664 if (!resourceComponentFrom)
2670 SCR_ResourceComponent resourceComponentTo = SCR_ResourceComponent.FindResourceComponent(entityTo);
2672 if (!resourceComponentTo)
2685 if (!resourceInventoryComp)
2688 IEntity entityFrom = dialog.GetEntityFrom();
2689 IEntity entityTo = dialog.GetEntityTo();
2691 SCR_ResourceComponent resourceComponentFrom = SCR_ResourceComponent.FindResourceComponent(entityFrom);
2693 if (!resourceComponentFrom)
2703 SCR_ResourceComponent resourceComponentTo = SCR_ResourceComponent.FindResourceComponent(entityTo);
2706 if (resourceComponentTo)
2709 SCR_InventoryStorageManagerComponent invManagerTo;
2713 invManagerTo = SCR_InventoryStorageManagerComponent.Cast(entityParentTo.
FindComponent(SCR_InventoryStorageManagerComponent));
2718 BaseInventoryStorageComponent storageTo = BaseInventoryStorageComponent.Cast(entityTo.
FindComponent(BaseInventoryStorageComponent));
2787 IEntity item = itemComp.GetOwner();
2789 SCR_WeaponAttachmentsStorageComponent weaponAttachmentStorage = SCR_WeaponAttachmentsStorageComponent.Cast(item.
FindComponent(SCR_WeaponAttachmentsStorageComponent));
2791 if (weaponAttachmentStorage)
2813 void InspectWeapon(SCR_WeaponAttachmentsStorageComponent weaponAttachmentStorage)
2819 Widget inspectionFrame =
m_widget.FindAnyWidget(
"AttachmentPoints");
2844 array<SCR_InventorySlotUI> pSlotsInListUI = {};
2858 BaseInventoryStorageComponent pStorageTo;
2861 if ( !pStorageSlotUI )
2864 pStorageTo = pStorageSlotUI.GetAsStorage();
2870 if ( pStorageSlotUI.GetAsStorage() ==
m_pSelectedSlotUI.GetStorageUI().GetCurrentNavigationStorage() )
2872 pStorageSlotUI.SetEnabledForMove( 0 );
2877 if ( !pInventoryItem )
2880 IEntity pItem = pInventoryItem.GetOwner();
2884 bool bCanStore =
true;
2893 pStorageSlotUI.SetEnabledForMove( 1 );
2895 pStorageSlotUI.SetEnabledForMove( 0 );
2899 pStorageSlotUI.SetEnabledForMove( 0 );
2904 pStorageSlotUI.SetEnabledForMove( 0 );
2910 pStorageSlotUI.SetEnabledForMove( 2 );
2918 array<SCR_InventorySlotUI> aItemsUIInLoot = {};
2927 PrintFormat(
"INV: Filtering out items %1", 1.5 );
2931 if ( !pSlot.GetStorageComponent() )
2936 pSlot.SetEnabledForMove( 0 );
2941 pSlot.SetEnabledForMove( 2 );
2987 array<BaseInventoryStorageComponent> traverseStorage = {};
2991 storageUIHandler.GetTraverseStorage(traverseStorage);
2994 if (!traverseStorage.IsEmpty())
2996 BaseInventoryStorageComponent storage = traverseStorage[0];
2999 IEntity entity = storage.GetOwner();
3227 bool onDrop =
false;
3232 if (underCursor && underCursor.GetName() ==
"HitZoneButton")
3334 IEntity item = itemComp.GetOwner();
3352 bool operationFailed;
3355 if (operationFailed)
3378 IEntity pItem = pComp.GetOwner();
3395 BaseInventoryStorageComponent pStorageFromComponent =
m_pCallBack.m_pStorageFrom.GetCurrentNavigationStorage();
3396 BaseInventoryStorageComponent pStorageToComponent =
m_pFocusedSlotUI.GetAsStorage();
3398 if (!pStorageToComponent)
3399 pStorageToComponent =
m_pCallBack.m_pStorageTo.GetStorage();
3401 if (!pStorageToComponent || pStorageToComponent == pStorageFromComponent)
3442 IEntity pItem = pComp.GetOwner();
3455 if (pItemToReplaceComp)
3456 pItemToReplace = pItemToReplaceComp.GetOwner();
3461 if (!itemAttributes)
3467 if (itemAttribute && itemAttribute.GetAttachmentType())
3469 BaseInventoryStorageComponent pItemToReplaceStorage = BaseInventoryStorageComponent.Cast(pItemToReplace.
FindComponent(BaseInventoryStorageComponent));
3471 if (!pItemToReplaceStorage)
3488 BaseInventoryStorageComponent itemToReplaceStorage = BaseInventoryStorageComponent.Cast(pItemToReplace.
FindComponent(BaseInventoryStorageComponent));
3490 if (itemToReplaceStorage &&
m_InventoryManager.CanInsertItemInStorage(pItem, itemToReplaceStorage, -1))
3501 if (pItemToReplace && pItem && pItemToReplace != pItem)
3535 bool operationFailed;
3540 if (operationFailed)
3557 IEntity pItem = pComp.GetOwner();
3566 if ( pStorageBaseUI )
3582 if (pStorageTo && pStorageTo.IsInherited(SCR_WeaponAttachmentsStorageComponent))
3590 BaseInventoryStorageComponent storageFrom =
m_pCallBack.m_pStorageFrom.GetStorage();
3591 if (storageFrom && storageFrom.IsInherited(SCR_WeaponAttachmentsStorageComponent))
3604 else if ( pStorageTo && CharacterInventoryStorageComponent.Cast( pStorageTo ) )
3631 else if (
m_pCallBack.m_pStorageFrom.GetStorage().IsInherited(SCR_WeaponAttachmentsStorageComponent))
3664 BaseInventoryStorageComponent pStorageFrom =
m_pSelectedSlotUI.GetStorageUI().GetStorage();
3679 BaseInventoryStorageComponent isStorage = BaseInventoryStorageComponent.Cast(pItem.
FindComponent(BaseInventoryStorageComponent));
3694 if (pStorageFrom && pStorageFrom.IsInherited(SCR_WeaponAttachmentsStorageComponent))
3744 BaseInventoryStorageComponent storagefrom =
m_pStorageLootUI.GetCurrentNavigationStorage();
3749 storagefrom = BaseInventoryStorageComponent.Cast(ent.
FindComponent(BaseInventoryStorageComponent));
3776 BaseInventoryStorageComponent storageFrom;
3778 storageFrom = parentSlotFrom.GetStorage();
3795 pStorageTo = pStorageComp;
3800 pStorageTo = pStorageComp;
3812 BaseInventoryStorageComponent isStorage = BaseInventoryStorageComponent.Cast(pItem.
FindComponent(BaseInventoryStorageComponent));
3828 BaseInventoryStorageComponent currStorage =
m_pSelectedSlotUI.GetStorageUI().GetCurrentNavigationStorage();
3877 pStorageTo = pStorageComp;
3882 pStorageTo = pStorageComp;
3890 pStorageTo = pStorageComp;
3895 pStorageTo = pStorageComp;
3918 IEntity pItem = pInvComponent.GetOwner();
3946 if (!refundItemComponent)
3950 if (refundItemAttributes && !refundItemAttributes.IsRefundable())
3953 BaseInventoryStorageComponent selectedSlotStorage = slotToCheck.GetAsStorage();
3957 if (selectedSlotUniversalStorage && selectedSlotUniversalStorage.GetNonRefundableItemCount() > 0)
3959 nonrefundableItemInStorage =
true;
3965 ClothNodeStorageComponent selectedSlotClothStorage = ClothNodeStorageComponent.Cast(selectedSlotStorage);
3966 if (selectedSlotClothStorage)
3968 array<BaseInventoryStorageComponent> storages = {};
3969 selectedSlotClothStorage.GetOwnedStorages(storages, 1,
false);
3972 foreach (BaseInventoryStorageComponent stor : storages)
3979 if (univStor.GetNonRefundableItemCount() > 0)
3981 nonrefundableItemInStorage =
true;
3994 BaseInventoryStorageComponent storageComponent =
m_pStorageLootUI.GetCurrentNavigationStorage();
4007 IEntity arsenalEntity = storageComponent.GetOwner();
4018 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(arsenalEntity);
4021 if (!resourceInventoryComponent)
4039 if (!arsenalInventorySlotUI)
4049 BaseInventoryStorageComponent storageComponent =
m_pStorageLootUI.GetCurrentNavigationStorage();
4051 if (!storageComponent)
4057 IEntity arsenalEntity = storageComponent.GetOwner();
4065 operationFailed =
true;
4071 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(arsenalEntity);
4080 if (!storageComponent)
4082 if (arsenalInventorySlotUI && storageComponent.GetOwner().FindComponent(SCR_ArsenalInventoryStorageManagerComponent))
4087 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(arsenalEntity);
4091 if (storageTo.IsInherited(ClothNodeStorageComponent))
4096 operationFailed =
true;
4101 if (
m_InventoryManager.CanInsertItemInStorage(arsenalInventorySlotUI.GetInventoryItemComponent().GetOwner(), storageTo))
4104 operationFailed =
true;
4124 BaseInventoryStorageComponent storageTo = weaponSlot.GetStorageUI().GetStorage();
4128 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(arsenalEntity);
4134 storageTo = weaponSlot.GetStorageComponent();
4137 if (
m_InventoryManager.CanInsertItemInStorage(arsenalInventorySlotUI.GetInventoryItemComponent().GetOwner(), storageTo))
4157 if (!arsenalInventorySlotUI)
4168 BaseInventoryStorageComponent storageComponent =
m_pStorageLootUI.GetCurrentNavigationStorage();
4170 if (!storageComponent)
4176 IEntity arsenalEntity = storageComponent.GetOwner();
4184 operationFailed =
true;
4190 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(arsenalEntity);
4204 operationFailed =
true;
4213 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(arsenalEntity);
4217 if (storageTo.IsInherited(ClothNodeStorageComponent))
4222 operationFailed =
true;
4227 if (
m_InventoryManager.CanInsertItemInStorage(arsenalInventorySlotUI.GetInventoryItemComponent().GetOwner(), storageTo))
4230 operationFailed =
true;
4249 IEntity slotEntity = arsenalInventorySlotUI.GetInventoryItemComponent().GetOwner();
4252 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(arsenalEntity);
4276 IEntity slotEntity = arsenalInventorySlotUI.GetInventoryItemComponent().GetOwner();
4279 SCR_ResourceComponent resourceComponent = SCR_ResourceComponent.FindResourceComponent(arsenalEntity);
4300 SCR_ResourceComponent resourceComponentFrom;
4305 resourceComponentFrom = SCR_ResourceComponent.FindResourceComponent(draggedEntity);
4307 if (!resourceComponentFrom)
4311 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(resourceComponentFrom.GetOwner().FindComponent(SCR_BaseCompartmentManagerComponent));
4312 if (compartmentManager && compartmentManager.BlockSuppliesIfOccupied() && compartmentManager.GetOccupantCount() > 0)
4325 if (!interactorFrom)
4328 if (!interactorFrom)
4337 array<SCR_EntityCatalogEntry> entries = {};
4338 array<SCR_BaseEntityCatalogData>
data = {};
4343 float maxStoredResources =
Math.Min(interactorFrom.GetAggregatedResourceValue(), datum.
GetMaxResourceValue());
4345 if (maxStoredResources <= 0)
4353 IEntity targetEntity = storageTo.GetOwner();
4357 SCR_ResourceComponent targetResourceComponent = SCR_ResourceComponent.FindResourceComponent(targetEntity);
4361 if (targetResourceComponent)
4366 if (draggedEntity == targetEntity || resourceComponentFrom == targetResourceComponent)
4370 array<SCR_EntityCatalogEntry> entries = {};
4371 array<SCR_BaseEntityCatalogData>
data = {};
4372 float maxResourceValueTo = 0.0;
4380 if (invManagerTo.CanInsertResourceInStorage(entry.GetPrefab(), storageTo))
4387 float maxStoredResources =
Math.Min(interactorFrom.GetAggregatedResourceValue(), maxResourceValueTo);
4389 if (maxStoredResources <= 0)
4411 IEntity draggedEntity = iic.GetOwner();
4415 SCR_ResourceComponent resourceComponentFrom = SCR_ResourceComponent.FindResourceComponent(draggedEntity);
4417 if (!resourceComponentFrom)
4430 SCR_ResourceComponent resourceComponentTo = SCR_ResourceComponent.FindResourceComponent(targetEntity);
4432 if (!resourceComponentTo)
4436 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(resourceComponentTo.GetOwner().FindComponent(SCR_BaseCompartmentManagerComponent));
4437 if (compartmentManager && compartmentManager.BlockSuppliesIfOccupied() && compartmentManager.GetOccupantCount() > 0)
4442 if (!interactorFrom)
4445 if (!interactorFrom)
4461 float maxStoredResources =
Math.Min(interactorFrom.GetAggregatedResourceValue(), interactorTo.GetAggregatedMaxResourceValue() - interactorTo.GetAggregatedResourceValue());
4463 if (maxStoredResources <= 0)
4490 if (!m_pStorageToOpen)
4493 BaseInventoryStorageComponent comp = BaseInventoryStorageComponent.Cast(m_pStorageToOpen.
FindComponent(BaseInventoryStorageComponent));
4503 if (storageUI.IsTraversalAllowed())
4504 storageUI.Traverse(comp);
4520 GetGame().GetWorkspace().SetFocusedWidget(focusWidget);
4534 parentUIContainer.Traverse(storage);
4539 GetGame().GetWorkspace().SetFocusedWidget(lastCloseTraverseButton);
4553 if (inventoryItemComponent && inventoryItemComponent.GetParentSlot() && inventoryItemComponent.GetOwner().
FindComponent(SCR_ArsenalInventoryStorageManagerComponent))
4578 void OpenLinkedStorages(BaseInventoryStorageComponent parentStorage,
bool showVicinity =
true,
bool hideCloseButton =
true)
4594 array<BaseInventoryStorageComponent> linkedStorages = {};
4595 if (scrStorage.GetLinkedStorages(linkedStorages) <= 0)
4600 foreach (BaseInventoryStorageComponent linkedStorage : linkedStorages)
4606 alreadyOpen =
false;
4611 if (openedStorage.GetStorage() == linkedStorage)
4649 array<BaseInventoryStorageComponent> linkedStorages = {};
4650 if (scrStorage.GetLinkedStorages(linkedStorages) <= 0)
4663 if (openedStorage.GetStorage() == scrStorage)
4668 foreach (BaseInventoryStorageComponent linkedStorage : linkedStorages)
4676 if (openedStorage.GetStorage() == linkedStorage)
4804 if (pParentStorage && pParentStorage.IsTraversalAllowed())
4806 pParentStorage.Back(traverseStorageIndex);
4849 int iMouseX, iMouseY;
4854 int dY =
Math.AbsInt( iMouseY - m_iMouseY );
4867 if (!focusedItemComp)
4874 IEntity owner = slot.GetOwner();
4904 previewEntity = pComp.GetOwner();
4937 float fWidth, fHeight;
4940 fWidth = wWorkSpace.DPIUnscale( fWidth ) / 2;
4941 fHeight = wWorkSpace.DPIUnscale( fHeight ) / 2;
4964 if (openedStorage.GetStorage() == storage)
4965 return openedStorage;
5019 protected bool IsStorageInsideLBS( BaseInventoryStorageComponent pStorage, ClothNodeStorageComponent pLBSStorage )
5023 array<BaseInventoryStorageComponent> aOutStorages =
new array<BaseInventoryStorageComponent>();
5024 pLBSStorage.GetOwnedStorages( aOutStorages, 1,
false );
5025 return aOutStorages.Find(pStorage) != -1;
5039 if (quickSlotIndex > -1)
5050 else if ( storage.Type() == WeaponAttachmentsStorageComponent )
5088 if (quickSlotIndex > -1)
5094 SCR_ConsumableItemComponent consumable = SCR_ConsumableItemComponent.Cast(item.
FindComponent(SCR_ConsumableItemComponent));
5095 if (consumable && consumable.GetConsumableEffect() && consumable.GetConsumableEffect().GetDeleteOnUse())
5151 IEntity itemEntity = itemComp.GetOwner();
5155 SCR_EntityCatalogManagerComponent entityCatalogManager = SCR_EntityCatalogManagerComponent.GetInstance();
5156 string smallestContainerPrefab =
"";
5158 if (entityCatalogManager)
5161 array<SCR_EntityCatalogEntry> entries = {};
5162 array<SCR_BaseEntityCatalogData>
data = {};
5166 if (!entries.IsEmpty())
5168 int minResourceValue;
5169 int currentEntryValue;
5175 if (!minResourceValue)
5176 minResourceValue = 0;
5183 if (currentEntryValue > minResourceValue)
5186 minResourceValue = currentEntryValue;
5191 smallestContainerPrefab = entry.GetPrefab();
5196 BaseInventoryStorageComponent contStorage;
5197 array<BaseInventoryStorageComponent> contStorageOwnedStorages = {};
5198 SCR_EquipmentStorageComponent equipmentStorage;
5199 IEntity smallestContainerEntity;
5201 if (smallestContainerPrefab !=
"")
5202 smallestContainerEntity =
GetGame().SpawnEntityPrefabLocal(
Resource.Load(smallestContainerPrefab));
5213 contStorage = storageBaseUI.GetStorage();
5217 float itemWeight = itemComp.GetTotalWeight();
5218 float totalWeightWithInsertedItem;
5220 totalWeightWithInsertedItem = storageBaseUI.GetTotalRoundedUpWeight(contStorage);
5221 totalWeightWithInsertedItem +=
Math.Round(itemWeight * 100) * 0.01;
5223 storageBaseUI.UpdateTotalWeight(totalWeightWithInsertedItem);
5225 float totalOccupiedVolumeWithInsertedItem;
5226 totalOccupiedVolumeWithInsertedItem = storageBaseUI.GetOccupiedVolume(contStorage);
5227 totalOccupiedVolumeWithInsertedItem += itemComp.GetTotalVolume();
5229 contStorageOwnedStorages.Clear();
5230 contStorage.GetOwnedStorages(contStorageOwnedStorages, 1,
false);
5231 contStorageOwnedStorages.Insert(contStorage);
5233 bool shouldUpdateVolumePercentage =
true;
5239 shouldUpdateVolumePercentage =
false;
5243 shouldUpdateVolumePercentage =
false;
5245 if (shouldUpdateVolumePercentage)
5246 storageBaseUI.UpdateVolumePercentage(storageBaseUI.GetOccupiedVolumePercentage(contStorage, totalOccupiedVolumeWithInsertedItem),
true);
5248 bool canInsert =
m_InventoryManager.CanInsertItemInActualStorage(itemEntity, contStorage);
5250 if (!canInsert && SCR_ResourceComponent.FindResourceComponent(itemEntity))
5251 canInsert =
m_InventoryManager.CanInsertItemInActualStorage(smallestContainerEntity, contStorage);
5253 if (!canInsert && validStorage)
5254 canInsert =
m_InventoryManager.CanInsertItemInActualStorage(itemEntity, validStorage);
5257 bool weightCheck =
true;
5259 weightCheck = uniContStorage.IsAdditionalWeightOk(itemComp.GetTotalWeight());
5262 if (!contStorage.PerformDimensionValidation(itemEntity))
5268 if (!contStorage.PerformVolumeValidation(itemEntity))
5272 storageBaseUI.SetStorageAsHighlighted(
true);
5274 storageBaseUI.SetStorageAsHighlighted(
false,
reason);
5277 delete smallestContainerEntity;
5288 storageBaseUI.UpdateVolumePercentage(storageBaseUI.GetOccupiedVolumePercentage(storageBaseUI.GetStorage()));
5289 storageBaseUI.UpdateTotalWeight(storageBaseUI.GetTotalRoundedUpWeight(storageBaseUI.GetStorage()));
5290 storageBaseUI.SetStorageAsHighlighted(
true);
5297 pContainer.ShowContainerBorder(
false );
5306 pContainer.ShowContainerBorder(
true);
5315 pContainer.ShowContainerBorder(
false);
5357 for (
int slotId = 1; slotId <= quickSlotCount; ++slotId)
5374 m_wQuickSlotStorage =
GetGame().GetWorkspace().CreateWidgets(
"{A1E61EF091EAC47D}UI/layouts/Menus/Inventory/InventoryQuickSlotsGrid.layout", parent );
5395 for (
int id = 1;
id <= quickSlotCount; ++
id)
5412 if ( !pInventoryComponent )
5441 if (!pInventoryComponent)
5444 IEntity pItem = pInventoryComponent.GetOwner();
5465 if (!itemAttributes)
5486 if (selectedSlotStorage &&
5499 pOriginalEntity = pComp.GetOwner();
5504 if (!inventoryComponent)
5507 IEntity item = inventoryComponent.GetOwner();
5533 if (pOriginalEntity)
5548 if (!item1 || !item2)
5588 BaseWeaponManagerComponent weaponMan = BaseWeaponManagerComponent.Cast(
m_Player.FindComponent(BaseWeaponManagerComponent));
5596 return weaponComp == weaponMan.GetCurrentWeapon();
5603 if (!itemComp || !itemComp.GetOwner())
5607 if (!targetItemComp || !targetItemComp.GetOwner())
5611 if (!itemAttributes)
5616 if (itemAttribute && itemAttribute.GetAttachmentType())
5618 BaseInventoryStorageComponent pItemToReplaceStorage = BaseInventoryStorageComponent.Cast(targetItemComp.GetOwner().
FindComponent(BaseInventoryStorageComponent));
5620 if (!pItemToReplaceStorage)
5623 return m_InventoryManager.CanInsertItemInStorage(itemComp.GetOwner(), pItemToReplaceStorage)
5624 ||
m_InventoryManager.CanMoveItemToStorage(itemComp.GetOwner(), pItemToReplaceStorage);
5649 if (oldState != isGamepad)
5689 FactionManager factionManager =
GetGame().GetFactionManager();
5692 array<Faction> factions = {};
5693 factionManager.GetFactionsList(factions);
5696 foreach (
Faction faction : factions)
5699 if (!factionHintInfo)
5715 vs.Get(
"m_iViewDistance", dist);
5716 GetGame().SetViewDistance(dist);
5721 protected float GetTotalLoadWeight();
5725 protected void Init();
5727 void ShowStorage( BaseInventoryStorageComponent storage );
5730 void ShowItemInfo(
string sName =
"",
string sDescr =
"",
float sWeight = 0.0 );
5743 override bool OnClick(
Widget w,
int x,
int y,
int button );
ArmaReforgerScripted GetGame()
ResourceName resourceName
SCR_BaseGameMode GetGameMode()
InputManager GetInputManager()
void SCR_CharacterRankComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Get all prefabs that have the spawner data
void SCR_InventoryAttachmentStorageUI(BaseInventoryStorageComponent storage, LoadoutAreaType slotID=null, SCR_InventoryMenuUI menuManager=null, int iPage=0, array< BaseInventoryStorageComponent > aTraverseStorage=null, InventorySearchPredicate searchPredicate=null)
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
SCR_RespawnComponentClass OK
Result code for request/assign response.
void SCR_UniversalInventoryStorageComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
proto external Managed FindComponent(typename typeName)
proto external EntityPrefabData GetPrefabData()
proto external IEntity GetParent()
proto external bool IsDeleted()
Object holding reference to resource. In destructor release the resource.
int GetPersonalResourceCost()
float GetItemSupplyCost()
SCR_ECharacterRank GetRequiredRank()
ScriptInvoker GetOnControllableDeleted()
Blood - does not receive damage directly, only via scripted events.
ref OnLifeStateChangedInvoker m_OnLifeStateChanged
void SetFaction(notnull Faction faction, notnull SCR_OutfitFactionData outfitFactionData)
override void OnComplete()
SCR_InventoryHitZoneUI GetStorage()
void RemoveTourniquetFromSlot()
void InitializeHitZoneUI(BaseInventoryStorageComponent storage, SCR_InventoryMenuUI menuManager, int hitZoneId, IEntity player, bool updateAttachmentStorage=true)
ECharacterHitZoneGroup GetHitZoneGroup()
bool CanApplyItem(notnull IEntity item)
override bool OnDrop(SCR_InventorySlotUI slot)
ButtonWidget ActivateCloseStorageButton()
override bool OnDrop(SCR_InventorySlotUI slot)
BaseInventoryStorageComponent GetStorageComponent()
returns the storage component associated with this UI component
InventoryItemComponent GetInventoryItemComponent()
void CheckCompatibility(SCR_InventorySlotUI slot)
void SetPagingActive(bool active)
void GetSlots(out notnull array< SCR_InventorySlotUI > outSlots)
ButtonWidget GetLastCloseTraverseButton()
string GetInventoryItemName(InventoryItemComponent item)
Function to override to get custom inventory name.
string GetInventoryItemDescription(InventoryItemComponent item)
Function to override to get custom inventory description.
static SCR_ItemSplitDialog Create(float max=1, IEntity entityTo=null, IEntity entityFrom=null)
static IEntity GetLocalControlledEntity()
Get max resource value of container Data obtained from if no max resource value found return max Resource value *int GetMaxResourceValue()
void RpcAsk_MergeContainerWithContainerPartial(RplId rplIdFrom, RplId rplIdTo, EResourceType resourceType, float requestedResources)
void RpcAsk_ArsenalRefundItem(RplId resourceComponentRplId, RplId inventoryItemRplId, EResourceType resourceType)
void RpcAsk_ArsenalRequestItem(RplId resourceComponentRplId, RplId storageComponentRplId, ResourceName resourceNameItem, EResourceType resourceType)
void RpcAsk_CreatePhysicalContainerWithContainer(RplId resourceComponentRplId, RplId inventoryManagerRplId, RplId storageComponentRplId, EResourceType resourceType, float requestedResources)
SCR_ResourceComponent GetResourceComponent()
UIInfo - allows to define UI elements.
enum EPhysicsLayerPresets Vehicle
SCR_EditableEntityComponent GetControlledEntity()
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.
proto void PrintFormat(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL, LogLevel level=LogLevel.NORMAL)
@ NONE
When Shape is created and not initialized yet.
SCR_FieldOfViewSettings Attribute
int TNodeId
Node global id is a hash of name of the node.
proto external PlayerController GetPlayerController()
proto native vector Vector(float x, float y, float z)