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_TourniquetStorageComponent.c
Go to the documentation of this file.
1
class
SCR_TourniquetStorageComponentClass
:
SCR_EquipmentStorageComponentClass
2
{
3
}
4
5
class
SCR_TourniquetMovedCallback :
ScriptedInventoryOperationCallback
6
{
7
SCR_CharacterInventoryStorageComponent
m_CharInventoryStorageComp
;
8
IEntity
m_Tourniquet
;
9
int
m_iSlotId
;
10
BaseInventoryStorageComponent
m_Storage
;
11
bool
m_bRemove
;
12
ref
ScriptInvoker<int>
m_OnTourniquetMoved
;
13
14
//------------------------------------------------------------------------------------------------
15
override
protected
void
OnComplete
()
16
{
17
if
(
m_bRemove
)
18
m_CharInventoryStorageComp
.RemoveItemFromQuickSlot(
m_Tourniquet
);
19
20
SCR_InventoryMenuUI
menu =
SCR_InventoryMenuUI
.Cast(
GetGame
().GetMenuManager().FindMenuByPreset(
ChimeraMenuPreset
.Inventory20Menu));
21
if
(menu)
22
{
23
if
(
m_Tourniquet
)
24
{
25
InventoryItemComponent
itemComp =
InventoryItemComponent
.Cast(
m_Tourniquet
.FindComponent(
InventoryItemComponent
));
26
if
(itemComp && itemComp.GetParentSlot())
27
{
28
BaseInventoryStorageComponent tqStorage = itemComp.GetParentSlot().GetStorage();
29
if
(tqStorage)
30
{
31
SCR_InventoryStorageBaseUI
storageUI = menu.
GetStorageUIByBaseStorageComponent
(tqStorage);
32
if
(storageUI)
33
storageUI.
Refresh
();
34
}
35
}
36
}
37
38
if
(
m_Storage
)
39
{
40
SCR_InventoryStorageBaseUI
storageUI = menu.
GetStorageUIByBaseStorageComponent
(
m_Storage
);
41
if
(storageUI)
42
storageUI.
Refresh
();
43
}
44
}
45
46
if
(
m_OnTourniquetMoved
)
47
m_OnTourniquetMoved
.Invoke(
m_iSlotId
);
48
}
49
}
50
51
class
SCR_TourniquetStorageComponent
: SCR_EquipmentStorageComponent
52
{
53
protected
ref SCR_TourniquetMovedCallback
m_TourniquetMovedCallback
=
new
SCR_TourniquetMovedCallback();
54
55
//------------------------------------------------------------------------------------------------
60
void
AddTourniquetToSlot
(
IEntity
target,
ECharacterHitZoneGroup
eHitZoneGroup,
IEntity
tourniquet)
61
{
62
SCR_TourniquetStorageComponent
tourniquetStorageComp =
SCR_TourniquetStorageComponent
.Cast(target.
FindComponent
(
SCR_TourniquetStorageComponent
));
63
if
(!tourniquetStorageComp)
64
return
;
65
66
SCR_InventoryStorageManagerComponent storageMan = SCR_InventoryStorageManagerComponent.Cast(
GetOwner
().FindComponent(SCR_InventoryStorageManagerComponent));
67
if
(!storageMan)
68
return
;
69
70
if
(!tourniquet)
71
return
;
72
73
SCR_TourniquetStorageSlot
tqTargetSlot;
74
for
(
int
i, count = tourniquetStorageComp.GetSlotsCount(); i < count; i++)
75
{
76
tqTargetSlot =
SCR_TourniquetStorageSlot
.Cast(tourniquetStorageComp.GetSlot(i));
77
if
(!tqTargetSlot)
78
continue
;
79
80
if
(tqTargetSlot.
GetAssociatedHZGroup
() != eHitZoneGroup)
81
continue
;
82
83
//Return if slot already contains this particular tourniquet. Likely function got called twice harmlessly
84
if
(tqTargetSlot.
GetItem
(i) == tourniquet)
85
return
;
86
87
if
(tqTargetSlot.
GetItem
(i))
88
{
89
Print
(
"TourniquetSlot already contained another item"
,
LogLevel
.WARNING);
90
return
;
91
}
92
93
break
;
94
}
95
96
SCR_CharacterInventoryStorageComponent
charInventoryStorageComp =
SCR_CharacterInventoryStorageComponent
.Cast(
GetOwner
().FindComponent(
SCR_CharacterInventoryStorageComponent
));
97
if
(!charInventoryStorageComp)
98
return
;
99
100
m_TourniquetMovedCallback
.m_Tourniquet = tourniquet;
101
m_TourniquetMovedCallback
.m_CharInventoryStorageComp = charInventoryStorageComp;
102
m_TourniquetMovedCallback
.m_iSlotId = eHitZoneGroup;
103
104
InventoryItemComponent
itemComp =
InventoryItemComponent
.Cast(tourniquet.
FindComponent
(
InventoryItemComponent
));
105
if
(itemComp.GetParentSlot())
106
m_TourniquetMovedCallback
.m_Storage = itemComp.GetParentSlot().GetStorage();
107
else
108
m_TourniquetMovedCallback
.m_Storage = null;
109
110
m_TourniquetMovedCallback
.m_bRemove =
true
;
111
112
if
(storageMan.TryMoveItemToStorage(tourniquet, tourniquetStorageComp, tqTargetSlot.GetID(),
m_TourniquetMovedCallback
))
113
return
;
114
115
InventoryItemComponent
invComp =
InventoryItemComponent
.Cast(tourniquet.
FindComponent
(
InventoryItemComponent
));
116
if
(!invComp)
117
return
;
118
119
if
(!invComp.GetParentSlot())
120
{
121
if
(storageMan.TryInsertItemInStorage(tourniquet, tourniquetStorageComp, tqTargetSlot.GetID(),
m_TourniquetMovedCallback
))
122
return
;
123
}
124
}
125
126
//------------------------------------------------------------------------------------------------
131
bool
RemoveTourniquetFromSlot
(
ECharacterHitZoneGroup
eHitZoneGroup,
IEntity
retrievingCharacter = null)
132
{
133
ChimeraCharacter
character =
ChimeraCharacter
.Cast(
GetOwner
());
134
if
(!character)
135
return
false
;
136
137
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(character.GetDamageManager());
138
if
(!damageMgr)
139
return
false
;
140
141
SCR_TourniquetStorageComponent
tourniquetStorageComp =
SCR_TourniquetStorageComponent
.Cast(
GetOwner
().FindComponent(
SCR_TourniquetStorageComponent
));
142
if
(!tourniquetStorageComp)
143
return
false
;
144
145
if
(!retrievingCharacter)
146
retrievingCharacter =
GetOwner
();
147
148
SCR_InventoryStorageManagerComponent storageMan = SCR_InventoryStorageManagerComponent.Cast(retrievingCharacter.FindComponent(SCR_InventoryStorageManagerComponent));
149
if
(!storageMan)
150
return
false
;
151
152
IEntity
targetTourniquet;
153
SCR_TourniquetStorageSlot
tqTargetSlot;
154
for
(
int
i, count = tourniquetStorageComp.GetSlotsCount(); i < count; i++)
155
{
156
tqTargetSlot =
SCR_TourniquetStorageSlot
.Cast(tourniquetStorageComp.GetSlot(i));
157
if
(!tqTargetSlot)
158
continue
;
159
160
if
(tqTargetSlot.
GetAssociatedHZGroup
() != eHitZoneGroup)
161
continue
;
162
163
targetTourniquet = tqTargetSlot.
GetItem
(i);
164
break
;
165
}
166
167
BaseInventoryStorageComponent targetStorage = storageMan.FindStorageForItem(targetTourniquet,
EStoragePurpose
.PURPOSE_DEPOSIT);
168
m_TourniquetMovedCallback
.m_Storage = targetStorage;
169
m_TourniquetMovedCallback
.m_bRemove =
false
;
170
171
if
(!targetTourniquet)
172
return
false
;
173
174
bool
success =
false
;
175
176
if
(storageMan.TryMoveItemToStorage(targetTourniquet, targetStorage, tqTargetSlot.GetID(),
m_TourniquetMovedCallback
))
177
success =
true
;
178
179
InventoryItemComponent
invComp =
InventoryItemComponent
.Cast(targetTourniquet.
FindComponent
(
InventoryItemComponent
));
180
if
(!invComp)
181
return
false
;
182
183
if
(!success && !invComp.GetParentSlot())
184
{
185
if
(storageMan.TryInsertItemInStorage(targetTourniquet, targetStorage, tqTargetSlot.GetID(),
m_TourniquetMovedCallback
))
186
success =
true
;
187
}
188
else
if
(!success)
189
{
190
if
(storageMan.TryMoveItemToStorage(targetTourniquet, targetStorage, tqTargetSlot.GetID(),
m_TourniquetMovedCallback
))
191
success =
true
;
192
}
193
194
if
(success)
195
{
196
SCR_HitZone
hitZone;
197
array<ref SCR_PersistentDamageEffect> tourniquetEffects = damageMgr.GetAllPersistentEffectsOfType(
SCR_TourniquetDamageEffect
);
198
foreach
(
SCR_PersistentDamageEffect
effect : tourniquetEffects)
199
{
200
hitZone =
SCR_HitZone
.Cast(effect.GetAffectedHitZone());
201
if
(!hitZone)
202
continue
;
203
204
if
(tqTargetSlot.
GetAssociatedHZGroup
() == hitZone.
GetHitZoneGroup
())
205
damageMgr.TerminateDamageEffect(effect);
206
}
207
208
return
true
;
209
}
210
211
return
false
;
212
}
213
214
//------------------------------------------------------------------------------------------------
215
override
void
OnAddedToSlot
(
IEntity
item,
int
slotID)
216
{
217
ChimeraCharacter
char
=
ChimeraCharacter
.Cast(
GetOwner
());
218
if
(!
char
)
219
return
;
220
221
SCR_TourniquetStorageSlot
tqSlot =
SCR_TourniquetStorageSlot
.Cast(
GetSlot
(slotID));
222
if
(!tqSlot)
223
return
;
224
225
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(
char
.
GetDamageManager
());
226
if
(!damageMgr)
227
return
;
228
229
damageMgr.
SetTourniquettedGroup
(tqSlot.
GetAssociatedHZGroup
(),
true
);
230
}
231
232
//------------------------------------------------------------------------------------------------
233
override
void
OnRemovedFromSlot
(
IEntity
item,
int
slotID)
234
{
235
ChimeraCharacter
char
=
ChimeraCharacter
.Cast(
GetOwner
());
236
if
(!
char
)
237
return
;
238
239
SCR_TourniquetStorageSlot
tqSlot =
SCR_TourniquetStorageSlot
.Cast(
GetSlot
(slotID));
240
if
(!tqSlot)
241
return
;
242
243
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(
char
.
GetDamageManager
());
244
if
(!damageMgr)
245
return
;
246
247
damageMgr.
SetTourniquettedGroup
(tqSlot.
GetAssociatedHZGroup
(),
false
);
248
}
249
250
//------------------------------------------------------------------------------------------------
252
ScriptInvoker
GetOnTourniquetMoved
()
253
{
254
if
(!
m_TourniquetMovedCallback
.m_OnTourniquetMoved)
255
m_TourniquetMovedCallback
.m_OnTourniquetMoved =
new
ScriptInvoker
();
256
257
return
m_TourniquetMovedCallback
.m_OnTourniquetMoved;
258
}
259
}
ChimeraMenuPreset
ChimeraMenuPreset
Menu presets.
Definition
ChimeraMenuBase.c:4
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
ECharacterHitZoneGroup
ECharacterHitZoneGroup
Definition
SCR_CharacterDamageManagerComponent.c:2
GetSlot
IEntity GetSlot(IEntity occupant)
Definition
SCR_CompositionSlotManagerComponent.c:100
m_CharInventoryStorageComp
SCR_SalineStorageComponentClass m_CharInventoryStorageComp
m_Storage
BaseInventoryStorageComponent m_Storage
Definition
SCR_TourniquetStorageComponent.c:10
m_iSlotId
int m_iSlotId
Definition
SCR_TourniquetStorageComponent.c:9
m_bRemove
bool m_bRemove
Definition
SCR_TourniquetStorageComponent.c:11
m_Tourniquet
IEntity m_Tourniquet
Definition
SCR_TourniquetStorageComponent.c:8
m_OnTourniquetMoved
ref ScriptInvoker< int > m_OnTourniquetMoved
Definition
SCR_TourniquetStorageComponent.c:12
GetDamageManager
SCR_VehicleDamageManagerComponent GetDamageManager()
Definition
VehicleControllerComponent.c:44
ChimeraCharacter
Definition
ChimeraCharacter.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
InventoryItemComponent
Definition
InventoryItemComponent.c:13
SCR_CharacterDamageManagerComponent
Definition
SCR_CharacterDamageManagerComponent.c:19
SCR_CharacterDamageManagerComponent::SetTourniquettedGroup
void SetTourniquettedGroup(ECharacterHitZoneGroup hitZoneGroup, bool setTourniquetted)
Definition
SCR_CharacterDamageManagerComponent.c:1247
SCR_CharacterInventoryStorageComponent
Definition
SCR_CharacterInventoryStorageComponent.c:90
SCR_EquipmentStorageComponentClass
Definition
SCR_EquipmentStorageComponent.c:2
SCR_HitZone
Definition
SCR_HitZone.c:2
SCR_HitZone::GetHitZoneGroup
EHitZoneGroup GetHitZoneGroup()
Definition
SCR_HitZone.c:12
SCR_InventoryMenuUI
Definition
SCR_InventoryMenuUI.c:286
SCR_InventoryMenuUI::GetStorageUIByBaseStorageComponent
SCR_InventoryStorageBaseUI GetStorageUIByBaseStorageComponent(BaseInventoryStorageComponent pStorage)
Definition
SCR_InventoryMenuUI.c:1804
SCR_InventoryStorageBaseUI
Definition
SCR_InventoryStorageBaseUI.c:7
SCR_InventoryStorageBaseUI::Refresh
void Refresh()
Definition
SCR_InventoryStorageBaseUI.c:748
SCR_PersistentDamageEffect
Definition
SCR_PersistentDamageEffect.c:7
SCR_TourniquetDamageEffect
Definition
SCR_TourniquetDamageEffect.c:2
SCR_TourniquetStorageComponentClass
Definition
SCR_TourniquetStorageComponent.c:2
SCR_TourniquetStorageComponent
Definition
SCR_TourniquetStorageComponent.c:52
SCR_TourniquetStorageComponent::AddTourniquetToSlot
void AddTourniquetToSlot(IEntity target, ECharacterHitZoneGroup eHitZoneGroup, IEntity tourniquet)
Definition
SCR_TourniquetStorageComponent.c:60
SCR_TourniquetStorageComponent::GetOnTourniquetMoved
ScriptInvoker GetOnTourniquetMoved()
Definition
SCR_TourniquetStorageComponent.c:252
SCR_TourniquetStorageComponent::RemoveTourniquetFromSlot
bool RemoveTourniquetFromSlot(ECharacterHitZoneGroup eHitZoneGroup, IEntity retrievingCharacter=null)
Definition
SCR_TourniquetStorageComponent.c:131
SCR_TourniquetStorageComponent::OnAddedToSlot
override void OnAddedToSlot(IEntity item, int slotID)
Definition
SCR_TourniquetStorageComponent.c:215
SCR_TourniquetStorageComponent::m_TourniquetMovedCallback
ref SCR_TourniquetMovedCallback m_TourniquetMovedCallback
Definition
SCR_TourniquetStorageComponent.c:53
SCR_TourniquetStorageComponent::OnRemovedFromSlot
override void OnRemovedFromSlot(IEntity item, int slotID)
Definition
SCR_TourniquetStorageComponent.c:233
SCR_TourniquetStorageSlot
Definition
SCR_TourniquetStorageSlot.c:2
SCR_TourniquetStorageSlot::GetAssociatedHZGroup
ECharacterHitZoneGroup GetAssociatedHZGroup()
Definition
SCR_TourniquetStorageSlot.c:8
SCR_TourniquetStorageSlot::GetItem
IEntity GetItem(int ID)
Definition
SCR_TourniquetStorageSlot.c:16
ScriptedInventoryOperationCallback
Definition
ScriptedInventoryOperationCallback.c:13
ScriptedInventoryOperationCallback::OnComplete
void OnComplete()
GetOwner
IEntity GetOwner()
Owner entity of the fuel tank.
Definition
SCR_FuelNode.c:128
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
EStoragePurpose
EStoragePurpose
Definition
EStoragePurpose.c:13
ScriptInvoker
ScriptInvokerBase< func > ScriptInvoker
Definition
tools.c:134
scripts
Game
Inventory
SCR_TourniquetStorageComponent.c
Generated by
1.17.0