Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_LoadItemsAction.c
Go to the documentation of this file.
1
class
SCR_LoadItemsAction
:
SCR_ScriptedUserAction
2
{
3
protected
SCR_FilteredInventoryStorageComponentClass
m_Data
;
4
protected
SCR_InventoryStorageManagerComponent
m_PlayerStorageManager
;
5
protected
BaseInventoryStorageComponent
m_TargetStorage
;
6
protected
IEntity
m_ItemForTransfer
;
7
protected
IEntity
m_TransferredItem
;
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
{
15
SCR_FilteredInventoryStorageComponent
storageComp =
SCR_FilteredInventoryStorageComponent
.Cast(pOwnerEntity.
FindComponent
(
SCR_FilteredInventoryStorageComponent
));
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
{
40
if
(
m_PlayerStorageManager
&& !
m_PlayerStorageManager
.CanMoveItemToStorage(
m_ItemForTransfer
,
m_TargetStorage
))
41
{
42
SetCannotPerformReason
(
REASON_CANNOT_FIT
);
43
return
false
;
44
}
45
46
return
true
;
47
}
48
49
ChimeraCharacter
character
=
ChimeraCharacter
.Cast(user);
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());
58
if
(!
m_PlayerStorageManager
)
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
75
SetCannotPerformReason
(
REASON_NO_ITEMS
);
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
{
93
if
(!
m_ItemForTransfer
|| !
m_PlayerStorageManager
|| !
m_TargetStorage
)
94
return
;
95
96
m_TransferredItem
=
m_ItemForTransfer
;
97
m_PlayerStorageManager
.TryMoveItemToStorage(
m_ItemForTransfer
,
m_TargetStorage
);
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
//------------------------------------------------------------------------------------------------
124
override
bool
HasLocalEffectOnlyScript
()
125
{
126
return
true
;
127
}
128
}
ECommonItemType
ECommonItemType
Definition
InventoryConstants.c:31
SCR_FilteredInventoryStorageComponent
void SCR_FilteredInventoryStorageComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_FilteredInventoryStorageComponent.c:146
BaseUserAction::SetCannotPerformReason
void SetCannotPerformReason(string reason)
Definition
BaseUserAction.c:21
ChimeraCharacter
Definition
ChimeraCharacter.c:13
GenericComponent
Definition
GenericComponent.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
SCR_FilteredInventoryStorageComponentClass
Definition
SCR_FilteredInventoryStorageComponent.c:3
SCR_LoadItemsAction
Definition
SCR_LoadItemsAction.c:2
SCR_LoadItemsAction::PerformContinuousAction
override void PerformContinuousAction(IEntity pOwnerEntity, IEntity pUserEntity, float timeSlice)
Definition
SCR_LoadItemsAction.c:82
SCR_LoadItemsAction::m_Data
SCR_FilteredInventoryStorageComponentClass m_Data
Definition
SCR_LoadItemsAction.c:3
SCR_LoadItemsAction::CanBeShownScript
override bool CanBeShownScript(IEntity user)
Definition
SCR_LoadItemsAction.c:24
SCR_LoadItemsAction::PerformAction
override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
Definition
SCR_LoadItemsAction.c:91
SCR_LoadItemsAction::REASON_NO_ITEMS
const string REASON_NO_ITEMS
Definition
SCR_LoadItemsAction.c:10
SCR_LoadItemsAction::m_ItemForTransfer
IEntity m_ItemForTransfer
Definition
SCR_LoadItemsAction.c:6
SCR_LoadItemsAction::OnActionCanceled
override void OnActionCanceled(IEntity pOwnerEntity, IEntity pUserEntity)
Definition
SCR_LoadItemsAction.c:117
SCR_LoadItemsAction::m_PlayerStorageManager
SCR_InventoryStorageManagerComponent m_PlayerStorageManager
Definition
SCR_LoadItemsAction.c:4
SCR_LoadItemsAction::REASON_CANNOT_FIT
const string REASON_CANNOT_FIT
Definition
SCR_LoadItemsAction.c:9
SCR_LoadItemsAction::m_TransferredItem
IEntity m_TransferredItem
Definition
SCR_LoadItemsAction.c:7
SCR_LoadItemsAction::Init
override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
Definition
SCR_LoadItemsAction.c:13
SCR_LoadItemsAction::m_TargetStorage
BaseInventoryStorageComponent m_TargetStorage
Definition
SCR_LoadItemsAction.c:5
SCR_LoadItemsAction::HasLocalEffectOnlyScript
override bool HasLocalEffectOnlyScript()
Definition
SCR_LoadItemsAction.c:124
SCR_LoadItemsAction::CanBePerformedScript
override bool CanBePerformedScript(IEntity user)
Definition
SCR_LoadItemsAction.c:36
SCR_ScriptedUserAction
A scripted action class having optional logic to check if vehicle is valid.
Definition
SCR_ScriptedUserAction.c:6
SCR_ScriptedUserAction::LoopActionUpdate
bool LoopActionUpdate(float timeSlice)
Definition
SCR_ScriptedUserAction.c:175
SCR_ScriptedUserAction::character
ChimeraCharacter character
Definition
SCR_ScriptedUserAction.c:35
PerformAction
@ PerformAction
Definition
EUserActionEvent.c:15
scripts
Game
UserActions
SCR_LoadItemsAction.c
Generated by
1.17.0