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_SalineStorageComponent.c
Go to the documentation of this file.
1
class
SCR_SalineStorageComponentClass
:
SCR_EquipmentStorageComponentClass
2
{
3
}
4
5
class
SCR_SalineMovedCallback :
ScriptedInventoryOperationCallback
6
{
7
SCR_CharacterInventoryStorageComponent
m_CharInventoryStorageComp
;
8
IEntity
m_SalineBag
;
9
float
m_fItemRegenerationDuration
;
10
11
//------------------------------------------------------------------------------------------------
12
override
protected
void
OnComplete
()
13
{
14
m_CharInventoryStorageComp
.RemoveItemFromQuickSlot(
m_SalineBag
);
15
//Destroy saline bag when the healing effect wears off
16
GetGame
().GetCallqueue().CallLater(
DestroySalineBag
,
m_fItemRegenerationDuration
* 1000,
false
,
m_SalineBag
);
17
}
18
19
//------------------------------------------------------------------------------------------------
20
protected
void
DestroySalineBag
(
IEntity
item)
21
{
22
if
(!item)
23
return
;
24
25
RplComponent.DeleteRplEntity(item,
false
);
26
}
27
}
28
29
class
SCR_SalineStorageComponent
: SCR_EquipmentStorageComponent
30
{
31
ref SCR_SalineMovedCallback m_SalineMovedCallback =
new
SCR_SalineMovedCallback();
32
33
//------------------------------------------------------------------------------------------------
40
bool
AddSalineBagToSlot(
IEntity
target,
ECharacterHitZoneGroup
eHitZoneGroup,
IEntity
salineBag,
float
itemRegenerationDuration)
41
{
42
if
(!target || !salineBag)
43
return
false
;
44
45
RplComponent rplComp = RplComponent.Cast(target.
FindComponent
(RplComponent));
46
if
(rplComp && rplComp.IsProxy())
47
return
false
;
48
49
SCR_SalineStorageComponent
SalineStorageComp =
SCR_SalineStorageComponent
.Cast(target.
FindComponent
(
SCR_SalineStorageComponent
));
50
if
(!SalineStorageComp)
51
return
false
;
52
53
SCR_InventoryStorageManagerComponent storageMan = SCR_InventoryStorageManagerComponent.Cast(
GetOwner
().FindComponent(SCR_InventoryStorageManagerComponent));
54
if
(!storageMan)
55
return
false
;
56
57
SCR_SalineBagStorageSlot
salineTargetSlot;
58
IEntity
attachedEntity;
59
for
(
int
i, count = SalineStorageComp.GetSlotsCount(); i < count; i++)
60
{
61
salineTargetSlot =
SCR_SalineBagStorageSlot
.Cast(SalineStorageComp.GetSlot(i));
62
if
(!salineTargetSlot)
63
continue
;
64
65
if
(salineTargetSlot.
GetAssociatedHZGroup
() != eHitZoneGroup)
66
continue
;
67
68
attachedEntity = salineTargetSlot.GetAttachedEntity();
69
if
(attachedEntity == salineBag)
70
return
false
;
71
72
if
(attachedEntity)
73
{
74
Debug
.Error(
"salineBagSlot already contained some item"
);
75
return
false
;
76
}
77
78
break
;
79
}
80
81
if
(!salineTargetSlot)
82
return
false
;
83
84
SCR_CharacterInventoryStorageComponent
charInventoryStorageComp =
SCR_CharacterInventoryStorageComponent
.Cast(
GetOwner
().FindComponent(
SCR_CharacterInventoryStorageComponent
));
85
if
(!charInventoryStorageComp)
86
return
false
;
87
88
m_SalineMovedCallback.m_SalineBag = salineBag;
89
m_SalineMovedCallback.m_CharInventoryStorageComp = charInventoryStorageComp;
90
m_SalineMovedCallback.m_fItemRegenerationDuration = itemRegenerationDuration;
91
92
if
(storageMan.TryMoveItemToStorage(salineBag, SalineStorageComp, salineTargetSlot.GetID(), m_SalineMovedCallback))
93
return
true
;
94
95
InventoryItemComponent
invComp =
InventoryItemComponent
.Cast(salineBag.
FindComponent
(
InventoryItemComponent
));
96
if
(!invComp)
97
return
false
;
98
99
if
(!invComp.GetParentSlot())
100
{
101
if
(storageMan.TryInsertItemInStorage(salineBag, SalineStorageComp, salineTargetSlot.GetID(), m_SalineMovedCallback))
102
return
true
;
103
}
104
else
105
{
106
if
(storageMan.TryMoveItemToStorage(salineBag, SalineStorageComp, salineTargetSlot.GetID(), m_SalineMovedCallback))
107
return
true
;
108
}
109
110
return
false
;
111
}
112
113
//------------------------------------------------------------------------------------------------
114
override
void
OnAddedToSlot(
IEntity
item,
int
slotID)
115
{
116
ChimeraCharacter
char
=
ChimeraCharacter
.Cast(
GetOwner
());
117
if
(!
char
)
118
return
;
119
120
SCR_SalineBagStorageSlot
salineSlot =
SCR_SalineBagStorageSlot
.Cast(
GetSlot
(slotID));
121
if
(!salineSlot)
122
return
;
123
124
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(
char
.
GetDamageManager
());
125
if
(!damageMgr)
126
return
;
127
128
damageMgr.
SetSalineBaggedGroup
(salineSlot.
GetAssociatedHZGroup
(),
true
);
129
}
130
131
//------------------------------------------------------------------------------------------------
132
override
void
OnRemovedFromSlot(
IEntity
item,
int
slotID)
133
{
134
ChimeraCharacter
char
=
ChimeraCharacter
.Cast(
GetOwner
());
135
if
(!
char
)
136
return
;
137
138
SCR_SalineBagStorageSlot
salineSlot =
SCR_SalineBagStorageSlot
.Cast(
GetSlot
(slotID));
139
if
(!salineSlot)
140
return
;
141
142
SCR_CharacterDamageManagerComponent
damageMgr =
SCR_CharacterDamageManagerComponent
.Cast(
char
.
GetDamageManager
());
143
if
(!damageMgr)
144
return
;
145
146
damageMgr.
SetSalineBaggedGroup
(salineSlot.
GetAssociatedHZGroup
(),
false
);
147
}
148
149
//------------------------------------------------------------------------------------------------
150
override
protected
bool
ShouldPreviewAttachedItems
()
151
{
152
return
true
;
153
}
154
}
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_fItemRegenerationDuration
float m_fItemRegenerationDuration
Definition
SCR_SalineStorageComponent.c:9
m_CharInventoryStorageComp
SCR_SalineStorageComponentClass m_CharInventoryStorageComp
DestroySalineBag
void DestroySalineBag(IEntity item)
Definition
SCR_SalineStorageComponent.c:20
m_SalineBag
IEntity m_SalineBag
Definition
SCR_SalineStorageComponent.c:8
GetDamageManager
SCR_VehicleDamageManagerComponent GetDamageManager()
Definition
VehicleControllerComponent.c:44
ChimeraCharacter
Definition
ChimeraCharacter.c:13
Debug
Definition
Debug.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::SetSalineBaggedGroup
void SetSalineBaggedGroup(ECharacterHitZoneGroup hitZoneGroup, bool setSalineBagged)
Definition
SCR_CharacterDamageManagerComponent.c:1311
SCR_CharacterInventoryStorageComponent
Definition
SCR_CharacterInventoryStorageComponent.c:90
SCR_EquipmentStorageComponentClass
Definition
SCR_EquipmentStorageComponent.c:2
SCR_SalineBagStorageSlot
Definition
SCR_SalineBagStorageSlot.c:2
SCR_SalineBagStorageSlot::GetAssociatedHZGroup
ECharacterHitZoneGroup GetAssociatedHZGroup()
Definition
SCR_SalineBagStorageSlot.c:8
SCR_SalineStorageComponentClass
Definition
SCR_SalineStorageComponent.c:2
SCR_SalineStorageComponent
Definition
SCR_SalineStorageComponent.c:30
SCR_SalineStorageComponent::ShouldPreviewAttachedItems
bool ShouldPreviewAttachedItems()
Definition
SCR_SalineStorageComponent.c:150
ScriptedInventoryOperationCallback
Definition
ScriptedInventoryOperationCallback.c:13
ScriptedInventoryOperationCallback::OnComplete
void OnComplete()
GetOwner
IEntity GetOwner()
Owner entity of the fuel tank.
Definition
SCR_FuelNode.c:128
scripts
Game
Inventory
SCR_SalineStorageComponent.c
Generated by
1.17.0