Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_SalineStorageComponent.c
Go to the documentation of this file.
4
5class SCR_SalineMovedCallback : ScriptedInventoryOperationCallback
6{
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
29class 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
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
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
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 {
117 if (!char)
118 return;
119
121 if (!salineSlot)
122 return;
123
125 if (!damageMgr)
126 return;
127
128 damageMgr.SetSalineBaggedGroup(salineSlot.GetAssociatedHZGroup(), true);
129 }
130
131 //------------------------------------------------------------------------------------------------
132 override void OnRemovedFromSlot(IEntity item, int slotID)
133 {
135 if (!char)
136 return;
137
139 if (!salineSlot)
140 return;
141
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}
ArmaReforgerScripted GetGame()
Definition game.c:1398
IEntity GetSlot(IEntity occupant)
float m_fItemRegenerationDuration
SCR_SalineStorageComponentClass m_CharInventoryStorageComp
void DestroySalineBag(IEntity item)
IEntity m_SalineBag
SCR_VehicleDamageManagerComponent GetDamageManager()
Definition Debug.c:13
proto external Managed FindComponent(typename typeName)
void SetSalineBaggedGroup(ECharacterHitZoneGroup hitZoneGroup, bool setSalineBagged)
ECharacterHitZoneGroup GetAssociatedHZGroup()
IEntity GetOwner()
Owner entity of the fuel tank.