Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_LoadItemsAction.c
Go to the documentation of this file.
2{
4 protected SCR_InventoryStorageManagerComponent m_PlayerStorageManager;
5 protected BaseInventoryStorageComponent m_TargetStorage;
8
9 protected const string REASON_CANNOT_FIT = "#AR-UserAction_LoadItems_NoSpace";
10 protected const string REASON_NO_ITEMS = "#AR-UserAction_LoadItems_NoItems";
11
12 //------------------------------------------------------------------------------------------------
13 override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
14 {
16 if (!storageComp)
17 return;
18
19 m_Data = SCR_FilteredInventoryStorageComponentClass.Cast(storageComp.GetComponentData(pOwnerEntity));
20 m_TargetStorage = BaseInventoryStorageComponent.Cast(pOwnerEntity.FindComponent(BaseInventoryStorageComponent));
21 }
22
23 //------------------------------------------------------------------------------------------------
24 override bool CanBeShownScript(IEntity user)
25 {
26 if (!m_Data || m_Data.GetNumberOfAllowedTypes() < 1)
27 return false;
28
29 if (!m_TargetStorage)
30 return false;
31
32 return super.CanBeShownScript(user);
33 }
34
35 //------------------------------------------------------------------------------------------------
36 override bool CanBePerformedScript(IEntity user)
37 {
38 if (m_ItemForTransfer && m_ItemForTransfer.GetRootParent() == user)
39 {
41 {
43 return false;
44 }
45
46 return true;
47 }
48
50 if (!user)
51 return false;
52
53 CharacterControllerComponent controller = character.GetCharacterController();
54 if (!controller)
55 return false;
56
57 m_PlayerStorageManager = SCR_InventoryStorageManagerComponent.Cast(controller.GetInventoryStorageManager());
59 return false;
60
61 array<IEntity> ownedItems = {};
62 SCR_CommonItemTypeSearchPredicate itemSearch = new SCR_CommonItemTypeSearchPredicate(0, m_TransferredItem);
63 foreach (ECommonItemType allowedType : m_Data.GetAllowedItemTypes())
64 {
65 ownedItems.Clear();
66 itemSearch.m_eItemType = allowedType;
67 m_PlayerStorageManager.FindItems(ownedItems, itemSearch);
68 if (ownedItems.IsEmpty())
69 continue;
70
71 m_ItemForTransfer = ownedItems[0];
72 break;
73 }
74
76 return false;
77 }
78
79
80 //------------------------------------------------------------------------------------------------
81 // If continues action it will only execute everytime the duration is done
82 override void PerformContinuousAction(IEntity pOwnerEntity, IEntity pUserEntity, float timeSlice)
83 {
84 if (!LoopActionUpdate(timeSlice))
85 return;
86
87 PerformAction(pOwnerEntity, pUserEntity);
88 }
89
90 //------------------------------------------------------------------------------------------------
91 override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
92 {
94 return;
95
98 m_ItemForTransfer = null;
99
100 array<IEntity> ownedItems = {};
101 array<ECommonItemType> allowedTypes = m_Data.GetAllowedItemTypes();
102 SCR_CommonItemTypeSearchPredicate itemSearch = new SCR_CommonItemTypeSearchPredicate(0, m_TransferredItem);
103 foreach (ECommonItemType allowedType : allowedTypes)
104 {
105 ownedItems.Clear();
106 itemSearch.m_eItemType = allowedType;
107 m_PlayerStorageManager.FindItems(ownedItems, itemSearch);
108 if (ownedItems.IsEmpty())
109 continue;
110
111 m_ItemForTransfer = ownedItems[0];
112 break;
113 }
114 }
115
116 //------------------------------------------------------------------------------------------------
117 override void OnActionCanceled(IEntity pOwnerEntity, IEntity pUserEntity)
118 {
119 m_ItemForTransfer = null;
120 m_TransferredItem = null;
121 }
122
123 //------------------------------------------------------------------------------------------------
125 {
126 return true;
127 }
128}
ECommonItemType
void SCR_FilteredInventoryStorageComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
void SetCannotPerformReason(string reason)
proto external Managed FindComponent(typename typeName)
override void PerformContinuousAction(IEntity pOwnerEntity, IEntity pUserEntity, float timeSlice)
SCR_FilteredInventoryStorageComponentClass m_Data
override bool CanBeShownScript(IEntity user)
override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
override void OnActionCanceled(IEntity pOwnerEntity, IEntity pUserEntity)
SCR_InventoryStorageManagerComponent m_PlayerStorageManager
const string REASON_CANNOT_FIT
override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
BaseInventoryStorageComponent m_TargetStorage
override bool HasLocalEffectOnlyScript()
override bool CanBePerformedScript(IEntity user)
A scripted action class having optional logic to check if vehicle is valid.
bool LoopActionUpdate(float timeSlice)
@ PerformAction