Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ResourceGeneratorServicePoint.c
Go to the documentation of this file.
1[BaseContainerProps(configRoot: true)]
3{
4 protected SCR_ServicePointComponent m_ServicePointComponent;
5 protected ref set<SCR_ResourceGeneratorMilitaryBase> m_aBaseGenerators;
6
7 //------------------------------------------------------------------------------------------------
8 override bool CanInteractWith(notnull SCR_ResourceContainer container)
9 {
11 {
13 {
14 if (baseGenerator && container.IsInteractorLinked(baseGenerator))
15 return super.CanInteractWith(container);
16 }
17 }
18
19 return super.CanInteractWith(container);
20 }
21
22 //------------------------------------------------------------------------------------------------
23 override void OnResourceGridUpdated(notnull SCR_ResourceGrid grid)
24 {
26 {
28 {
29 if (baseGenerator)
30 grid.UpdateInteractor(baseGenerator);
31 }
32 }
33
34 super.OnResourceGridUpdated(grid);
35 }
36
37 //------------------------------------------------------------------------------------------------
42 void OnBaseRegistered(notnull SCR_ServicePointComponent servicePoint, notnull SCR_MilitaryBaseComponent base)
43 {
44 SCR_ResourceComponent baseResourceComponent = SCR_ResourceComponent.Cast(base.GetOwner().FindComponent(SCR_ResourceComponent));
45
46 if (!baseResourceComponent)
47 return;
48
49 SCR_ResourceGeneratorMilitaryBase baseGenerator = SCR_ResourceGeneratorMilitaryBase.Cast(baseResourceComponent.GetGenerator(m_eIdentifier, m_eResourceType));
50
51 if (!baseGenerator)
52 return;
53
55 m_aBaseGenerators = new set<SCR_ResourceGeneratorMilitaryBase>();
56
57 m_aBaseGenerators.Insert(baseGenerator);
60
61 SCR_ResourceContainerQueueBase containerQueue = baseGenerator.GetContainerQueue();
62 SCR_ResourceContainer container;
63
64 for (int idx = containerQueue.GetContainerCount() - 1; idx >= 0; --idx)
65 {
66 container = containerQueue.GetContainerAt(idx);
67
68 if (!container)
69 continue;
70
71 OnBaseContainerRegistered(baseGenerator, container);
72 }
73 }
74
75 //------------------------------------------------------------------------------------------------
80 void OnBaseUnregistered(notnull SCR_ServicePointComponent servicePoint, notnull SCR_MilitaryBaseComponent base)
81 {
82 SCR_ResourceComponent baseResourceComponent = SCR_ResourceComponent.Cast(base.GetOwner().FindComponent(SCR_ResourceComponent));
83
84 if (!baseResourceComponent)
85 return;
86
87 SCR_ResourceGeneratorMilitaryBase baseGenerator = SCR_ResourceGeneratorMilitaryBase.Cast(baseResourceComponent.GetGenerator(m_eIdentifier, m_eResourceType));
88
89 if (!baseGenerator)
90 return;
91
93 m_aBaseGenerators.RemoveItem(baseGenerator);
94
97
98 SCR_ResourceContainerQueueBase containerQueue = baseGenerator.GetContainerQueue();
99 SCR_ResourceContainer container;
100
101 for (int idx = containerQueue.GetContainerCount() - 1; idx >= 0; --idx)
102 {
103 container = containerQueue.GetContainerAt(idx);
104
105 if (!container)
106 continue;
107
108 OnBaseContainerUnregistered(baseGenerator, container);
109 }
110 }
111
112 //------------------------------------------------------------------------------------------------
117 protected void OnBaseContainerRegistered(notnull SCR_ResourceGeneratorMilitaryBase generator, notnull SCR_ResourceContainer container)
118 {
120 return;
121
122 if (!container.IsInteractorLinked(this))
123 RegisterContainer(container);
124 }
125
126 //------------------------------------------------------------------------------------------------
132 {
134 return;
135
137 {
138 if (baseGenerator && container.IsInteractorLinked(baseGenerator))
139 return;
140 }
141
142 UnregisterContainer(container);
143 }
144
145 //------------------------------------------------------------------------------------------------
146 override void Initialize(notnull IEntity owner)
147 {
148 super.Initialize(owner);
149
150 m_ServicePointComponent = SCR_ServicePointComponent.Cast(GetOwner().FindComponent(SCR_ServicePointComponent));
151
153 return;
154
155 m_ServicePointComponent.GetOnBaseRegistered().Insert(OnBaseRegistered);
156 m_ServicePointComponent.GetOnBaseUnregistered().Insert(OnBaseUnregistered);
157 }
158
159 //------------------------------------------------------------------------------------------------
160 override void Clear()
161 {
162 super.Clear();
163
165 return;
166
167 m_ServicePointComponent.GetOnBaseRegistered().Remove(OnBaseRegistered);
168 m_ServicePointComponent.GetOnBaseUnregistered().Remove(OnBaseUnregistered);
169 }
170}
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
EResourceType m_eResourceType
SCR_ResourceContainer GetContainerAt(int index)
override bool UnregisterContainer(int containerIndex)
override bool RegisterContainer(notnull SCR_ResourceContainer container)
ScriptInvoker< SCR_ResourceGeneratorMilitaryBase, SCR_ResourceContainer > GetOnBaseContainerUnregistered()
ScriptInvoker< SCR_ResourceGeneratorMilitaryBase, SCR_ResourceContainer > GetOnBaseContainerRegistered()
void OnBaseRegistered(notnull SCR_ServicePointComponent servicePoint, notnull SCR_MilitaryBaseComponent base)
void OnBaseContainerUnregistered(notnull SCR_ResourceGeneratorMilitaryBase generator, notnull SCR_ResourceContainer container)
override void Initialize(notnull IEntity owner)
void OnBaseContainerRegistered(notnull SCR_ResourceGeneratorMilitaryBase generator, notnull SCR_ResourceContainer container)
ref set< SCR_ResourceGeneratorMilitaryBase > m_aBaseGenerators
void OnBaseUnregistered(notnull SCR_ServicePointComponent servicePoint, notnull SCR_MilitaryBaseComponent base)
override bool CanInteractWith(notnull SCR_ResourceContainer container)
override void OnResourceGridUpdated(notnull SCR_ResourceGrid grid)
IEntity GetOwner()
Owner entity of the fuel tank.