Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_ResourceContainerQueue.c
Go to the documentation of this file.
3 {
4  static const int FIRST_CONTAINER_INDEX = 0;
5  static const int INVALID_CONTAINER_INDEX = -1;
6  static const int INVALID_CONTAINER_COUNT = -1;
7 
8  protected SCR_ResourceComponent m_ResourceComponent;
9  protected ref array<SCR_ResourceContainer> m_aRegisteredContainers = new array<SCR_ResourceContainer>();
10  protected float m_fAggregatedResourceValue;
11  protected float m_fAggregatedMaxResourceValue;
12 
13  //------------------------------------------------------------------------------------------------
20  float GetAggregatedResourceValue()
21  {
22  #ifdef SANDBOX_RESOURCES_DEBUG
23  if (m_fAggregatedResourceValue < SCR_ResourceActor.RESOURCES_LOWER_LIMIT)
24  {
25  Debug.Error2("SCR_ResourceContainerQueueBase::m_fAggregatedResourceValue is lower than SCR_ResourceActor.RESOURCES_LOWER_LIMIT.", "The current aggregated resources can not be lower than SCR_ResourceActor.RESOURCES_LOWER_LIMIT.");
26 
27  return SCR_ResourceActor.RESOURCES_LOWER_LIMIT;
28  }
29 
30  return m_fAggregatedResourceValue;
31  #else
32  return m_fAggregatedResourceValue;
33  #endif
34  }
35 
36  //------------------------------------------------------------------------------------------------
43  float GetAggregatedMaxResourceValue()
44  {
45  #ifdef SANDBOX_RESOURCES_DEBUG
46  if (m_fAggregatedMaxResourceValue < SCR_ResourceActor.RESOURCES_LOWER_LIMIT)
47  {
48  Debug.Error2("SCR_ResourceContainerQueueBase::m_fAggregatedMaxResourceValue is lower than SCR_ResourceActor.RESOURCES_LOWER_LIMIT.", "The current maximum aggregated resources can not be lower than SCR_ResourceActor.RESOURCES_LOWER_LIMIT.");
49 
50  return SCR_ResourceActor.RESOURCES_LOWER_LIMIT;
51  }
52 
53  return m_fAggregatedMaxResourceValue;
54  #else
55  return m_fAggregatedMaxResourceValue;
56  #endif
57  }
58 
59  //------------------------------------------------------------------------------------------------
69  SCR_ResourceContainer GetFirstContainer()
70  {
71  #ifdef SANDBOX_RESOURCES_DEBUG
72  if (!m_aRegisteredContainers)
73  {
74  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is null.", "The array of registered containers has to be present.");
75 
76  return null;
77  }
78 
79  if (m_aRegisteredContainers.IsEmpty())
80  {
81  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is empty.", "The method should not be called if the array of registered containers is empty.");
82 
83  return null;
84  }
85 
86  SCR_ResourceContainer container = m_aRegisteredContainers[SCR_ResourceContainerQueueBase.FIRST_CONTAINER_INDEX];
87 
88  if (!container)
89  {
90  Debug.Error2("SCR_ResourceContainerQueueBase::GetFirstContainer found null instead of a resource container.", "There should never be null values in the registered containers array.");
91 
92  return null;
93  }
94 
95  return container;
96  #else
97  return m_aRegisteredContainers[SCR_ResourceContainerQueueBase.FIRST_CONTAINER_INDEX];
98  #endif
99  }
100 
101  //------------------------------------------------------------------------------------------------
110  SCR_ResourceContainer GetContainerAt(int index)
111  {
112  #ifdef SANDBOX_RESOURCES_DEBUG
113  if (!m_aRegisteredContainers)
114  {
115  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is null.", "The array of registered containers has to be present.");
116 
117  return null;
118  }
119 
120  if (m_aRegisteredContainers.IsEmpty())
121  {
122  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is empty.", "The method should not be called if the array of registered containers is empty.");
123 
124  return null;
125  }
126 
127  if (!m_aRegisteredContainers.IsIndexValid(index))
128  {
129  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers has no element at the provided index.", "The method should not be called if the array of registered containers does not contain an element at the provided index.");
130 
131  return null;
132  }
133 
134  SCR_ResourceContainer container = m_aRegisteredContainers[index];
135 
136  if (!container)
137  {
138  Debug.Error2("SCR_ResourceContainerQueueBase::GetContainerAt found null instead of a resource container.", "There should never be null values in the registered containers array.");
139 
140  return null;
141  }
142 
143  return container;
144  #else
145  return m_aRegisteredContainers[index];
146  #endif
147  }
148 
149  //------------------------------------------------------------------------------------------------
155  int GetContainerCount()
156  {
157  #ifdef SANDBOX_RESOURCES_DEBUG
158  if (!m_aRegisteredContainers)
159  {
160  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is null.", "The array of registered containers has to be present.");
161 
162  return SCR_ResourceContainerQueueBase.INVALID_CONTAINER_COUNT;
163  }
164 
165  return m_aRegisteredContainers.Count();
166  #else
167  return m_aRegisteredContainers.Count();
168  #endif
169  }
170 
171  //------------------------------------------------------------------------------------------------
180  int RegisterContainer(notnull SCR_ResourceContainer container)
181  {
182  #ifdef SANDBOX_RESOURCES_DEBUG
183 
184  if (!m_aRegisteredContainers)
185  {
186  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is null.", "The array of registered containers has to be present.");
187 
188  return SCR_ResourceContainerQueueBase.INVALID_CONTAINER_INDEX;
189  }
190 
191  if (m_aRegisteredContainers.Contains(container))
192  {
193  Debug.Error2("SCR_ResourceContainerQueueBase::RegisterContainer tried to register an already registered resource container.", "A resource container should not be registered more than once.");
194 
195  return SCR_ResourceContainerQueueBase.INVALID_CONTAINER_INDEX;
196  }
197 
198  return m_aRegisteredContainers.Insert(container);
199  #else
200  return m_aRegisteredContainers.Insert(container);
201  #endif
202  }
203 
204  //------------------------------------------------------------------------------------------------
212  int FindContainer(notnull SCR_ResourceContainer container)
213  {
214  #ifdef SANDBOX_RESOURCES_DEBUG
215  if (!m_aRegisteredContainers)
216  {
217  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is null.", "The array of registered containers has to be present.");
218 
219  return SCR_ResourceContainerQueueBase.INVALID_CONTAINER_INDEX;
220  }
221 
222  return m_aRegisteredContainers.Find(container);
223  #else
224  return m_aRegisteredContainers.Find(container);
225  #endif
226  }
227 
228  //------------------------------------------------------------------------------------------------
235  SCR_ResourceContainer PopFirstContainer()
236  {
237  #ifdef SANDBOX_RESOURCES_DEBUG
238  if (!m_aRegisteredContainers)
239  {
240  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is null.", "The array of registered containers has to be present.");
241 
242  return null;
243  }
244 
245  if (m_aRegisteredContainers.IsEmpty())
246  {
247  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is empty.", "The method should not be called if the array of registered containers is empty.");
248 
249  return null;
250  }
251 
252  SCR_ResourceContainer container = m_aRegisteredContainers[SCR_ResourceContainerQueueBase.FIRST_CONTAINER_INDEX];
253 
254  m_aRegisteredContainers.RemoveOrdered(SCR_ResourceContainerQueueBase.FIRST_CONTAINER_INDEX);
255 
256  return container;
257  #else
258  SCR_ResourceContainer container = m_aRegisteredContainers[SCR_ResourceContainerQueueBase.FIRST_CONTAINER_INDEX];
259 
260  m_aRegisteredContainers.RemoveOrdered(SCR_ResourceContainerQueueBase.FIRST_CONTAINER_INDEX);
261 
262  return container;
263  #endif
264  }
265 
266  //------------------------------------------------------------------------------------------------
275  SCR_ResourceContainer PopContainerAt(int index)
276  {
277  #ifdef SANDBOX_RESOURCES_DEBUG
278  if (!m_aRegisteredContainers)
279  {
280  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is null.", "The array of registered containers has to be present.");
281 
282  return null;
283  }
284 
285  if (m_aRegisteredContainers.IsEmpty())
286  {
287  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is empty.", "The method should not be called if the array of registered containers is empty.");
288 
289  return null;
290  }
291 
292  if (!m_aRegisteredContainers.IsIndexValid(index))
293  {
294  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers has no element at the provided index.", "The method should not be called if the array of registered containers does not contain an element at the provided index.");
295 
296  return null;
297  }
298 
299  SCR_ResourceContainer container = m_aRegisteredContainers[index];
300 
301  if (!container)
302  {
303  Debug.Error2("SCR_ResourceContainerQueueBase::PopContainerAt found null instead of a resource container.", "There should never be null values in the registered containers array.");
304 
305  return null;
306  }
307 
308  m_aRegisteredContainers.RemoveOrdered(index);
309 
310  return container;
311  #else
312  if (!m_aRegisteredContainers.IsIndexValid(index))
313  return null;
314 
315  SCR_ResourceContainer container = m_aRegisteredContainers[index];
316 
317  m_aRegisteredContainers.RemoveOrdered(index);
318 
319  return container;
320  #endif
321  }
322 
323  //------------------------------------------------------------------------------------------------
331  void SetAggregatedResourceValue(float value)
332  {
333  #ifdef SANDBOX_RESOURCES_DEBUG
334  if (value < SCR_ResourceActor.RESOURCES_LOWER_LIMIT)
335  {
336  Debug.Error2("SCR_ResourceContainerQueueBase::SetAggregatedResourceValue The value is lower than SCR_ResourceActor.RESOURCES_LOWER_LIMIT.", "The current aggregated resources can not be lower than SCR_ResourceActor.RESOURCES_LOWER_LIMIT.");
337 
338  return;
339  }
340 
341  if (value > m_fAggregatedMaxResourceValue)
342  {
343  Debug.Error2("SCR_ResourceContainerQueueBase::SetAggregatedResourceValue The value is greater than the current maximum aggregated resources value.", "The current aggregated resources can not be greater than than the current maximum aggregated resources value.");
344 
345  return;
346  }
347 
348  m_fAggregatedResourceValue = value;
349  #else
350  m_fAggregatedResourceValue = value;
351  #endif
352  }
353 
354  //------------------------------------------------------------------------------------------------
363  void SetAggregatedMaxResourceValue(float value)
364  {
365  #ifdef SANDBOX_RESOURCES_DEBUG
366  if (value < SCR_ResourceActor.RESOURCES_LOWER_LIMIT)
367  {
368  Debug.Error2("SCR_ResourceContainerQueueBase::SetAggregatedMaxResourceValue The value is lower than SCR_ResourceActor.RESOURCES_LOWER_LIMIT.", "The current maximum aggregated resources can not be lower than SCR_ResourceActor.RESOURCES_LOWER_LIMIT.");
369 
370  return;
371  }
372 
373  if (value < m_fAggregatedResourceValue)
374  {
375  Debug.Error2("SCR_ResourceContainerQueueBase::SetAggregatedMaxResourceValue The value is lower than the current aggregated resources value.", "The current maximum aggregated resources can not be lower than than the current aggregated resources value.");
376 
377  return;
378  }
379 
380  m_fAggregatedMaxResourceValue = value;
381  #else
382  m_fAggregatedMaxResourceValue = value;
383  #endif
384  }
385 
386  //------------------------------------------------------------------------------------------------
395  void IncreaseAggregatedResourceValue(float increment)
396  {
397  #ifdef SANDBOX_RESOURCES_DEBUG
398  if (increment < 0)
399  {
400  Debug.Error2("SCR_ResourceContainerQueueBase::IncreaseAggregatedResourceValue The increment is lower than 0.0.", "The increment has to be a positive number.");
401 
402  return;
403  }
404 
405  SetAggregatedResourceValue(m_fAggregatedResourceValue + increment);
406  #else
407  m_fAggregatedResourceValue += increment;
408  #endif
409  }
410 
411  //------------------------------------------------------------------------------------------------
420  void DecreaseAggregatedResourceValue(float decrement)
421  {
422  #ifdef SANDBOX_RESOURCES_DEBUG
423  if (decrement < 0)
424  {
425  Debug.Error2("SCR_ResourceContainerQueueBase::DecreaseAggregatedResourceValue The decrement is lower than 0.0.", "The decrement has to be a positive number.");
426 
427  return;
428  }
429 
430  SetAggregatedResourceValue(m_fAggregatedResourceValue - decrement);
431  #else
432  m_fAggregatedResourceValue -= decrement;
433  #endif
434 
435  }
436 
437  //------------------------------------------------------------------------------------------------
446  void IncreaseAggregatedMaxResourceValue(float increment)
447  {
448  #ifdef SANDBOX_RESOURCES_DEBUG
449  if (increment < 0)
450  {
451  Debug.Error2("SCR_ResourceContainerQueueBase::IncreaseAggregatedMaxResourceValue The increment is lower than 0.0.", "The increment has to be a positive number.");
452 
453  return;
454  }
455 
456  SetAggregatedMaxResourceValue(m_fAggregatedResourceValue + increment);
457  #else
458  m_fAggregatedMaxResourceValue += increment;
459  #endif
460  }
461 
462  //------------------------------------------------------------------------------------------------
471  void DecreaseAggregatedMaxResourceValue(float decrement)
472  {
473  #ifdef SANDBOX_RESOURCES_DEBUG
474  if (decrement < 0)
475  {
476  Debug.Error2("SCR_ResourceContainerQueueBase::DecreaseAggregatedMaxResourceValue The decrement is lower than 0.0.", "The decrement has to be a positive number.");
477 
478  return;
479  }
480 
481  SetAggregatedMaxResourceValue(m_fAggregatedResourceValue - decrement);
482  #else
483  m_fAggregatedMaxResourceValue -= decrement;
484  #endif
485  }
486 
487  //------------------------------------------------------------------------------------------------
491  array<SCR_ResourceContainer> Clear()
492  {
493  #ifdef SANDBOX_RESOURCES_DEBUG
494  array<SCR_ResourceContainer> clearedContainers = {};
495 
496  if (!m_aRegisteredContainers)
497  {
498  Debug.Error2("SCR_ResourceContainerQueueBase::m_aRegisteredContainers is null.", "The array of registered containers has to be present.");
499 
500  return clearedContainers;
501  }
502 
503  for (int index = m_aRegisteredContainers.Count() - 1; index >= 0; --index)
504  {
505  if (!m_aRegisteredContainers[index])
506  {
507  Debug.Error2("SCR_ResourceContainerQueueBase::Clear found null instead of a resource container.", "There should never be null values in the registered containers array.");
508 
509  return clearedContainers;
510  }
511 
513  clearedContainers.Insert(PopContainerAt(index));
514  }
515 
516  m_aRegisteredContainers.Clear();
517  SetAggregatedResourceValue(SCR_ResourceActor.RESOURCES_LOWER_LIMIT);
518  SetAggregatedMaxResourceValue(SCR_ResourceActor.RESOURCES_LOWER_LIMIT);
519 
520  return clearedContainers;
521  #else
522  array<SCR_ResourceContainer> clearedContainers = {};
523 
524  for (int index = m_aRegisteredContainers.Count() - 1; index >= 0; --index)
525  {
527  clearedContainers.Insert(PopContainerAt(index));
528  }
529 
530  m_aRegisteredContainers.Clear();
531 
532  m_fAggregatedResourceValue = SCR_ResourceActor.RESOURCES_LOWER_LIMIT;
533  m_fAggregatedMaxResourceValue = SCR_ResourceActor.RESOURCES_LOWER_LIMIT;
534 
535  return clearedContainers;
536  #endif
537  }
538 
539  //------------------------------------------------------------------------------------------------
540  void PerformSorting();
541 
542  //------------------------------------------------------------------------------------------------
543  void Initialize(notnull SCR_ResourceInteractor interactor)
544  {
545 
546  }
547 
548  //------------------------------------------------------------------------------------------------
549  void DebugDraw()
550  {
551 
552  }
553 
554  //------------------------------------------------------------------------------------------------
555  float UpdateContainerResourceValue(float currentValue, float previousValue)
556  {
557 
558  }
559 
560  //------------------------------------------------------------------------------------------------
561  float UpdateContainerMaxResourceValue(float currentValue, float previousValue)
562  {
563 
564  }
565 
566  //------------------------------------------------------------------------------------------------
569  {
570 
571  }
572 
573  //------------------------------------------------------------------------------------------------
576  {
577  Clear();
578  }
579 }
580 
582 class SCR_ResourceContainerQueue<Class ResourceInteractorType> : SCR_ResourceContainerQueueBase
583 {
585  protected ResourceInteractorType m_Interactor;
586 
587  [Attribute(uiwidget: UIWidgets.Object)]
588  protected ref array<ref SCR_ResourceStoragePolicyBase<ResourceInteractorType>> m_StoragePolicies;
589 
590  //------------------------------------------------------------------------------------------------
592  protected int GetStoragePolicyCount()
593  {
594  return m_StoragePolicies.Count();
595  }
596 
597  //------------------------------------------------------------------------------------------------
601  override int RegisterContainer(notnull SCR_ResourceContainer container)
602  {
603  int position = SCR_ResourceContainerQueueBase.INVALID_CONTAINER_INDEX;
604  float resourceValue;
605  bool shouldIncrementOffset;
606  SCR_ResourceContainerStorageQueue<ResourceInteractorType> storageQueue;
607 
608  EResourceContainerStorageType storageType = container.GetStorageType();
609 
610  foreach (SCR_ResourceStoragePolicyBase<ResourceInteractorType> policy: m_StoragePolicies)
611  {
612  storageQueue = policy.GetStorageQueue();
613 
614  if (shouldIncrementOffset)
615  {
616  storageQueue.IncrementOffset(1);
617  continue;
618  }
619 
620  resourceValue = container.GetResourceValue();
621 
622  if (!policy.IsStorageTypeValid(storageType))
623  continue;
624 
625  m_fAggregatedResourceValue += resourceValue;
626  m_fAggregatedMaxResourceValue += container.GetMaxResourceValue();
627 
628  shouldIncrementOffset = true;
629  position = storageQueue.RegisterContainer(container, m_Interactor);
630  }
631 
632  return position;
633  }
634 
635  //------------------------------------------------------------------------------------------------
636  override SCR_ResourceContainer PopFirstContainer()
637  {
638  bool shouldDecrementOffset;
639  SCR_ResourceContainerStorageQueue<ResourceInteractorType> storageQueue;
640  SCR_ResourceContainer container;
641 
642  foreach (SCR_ResourceStoragePolicyBase<ResourceInteractorType> policy: m_StoragePolicies)
643  {
644  storageQueue = policy.GetStorageQueue();
645 
646  if (storageQueue.IsEmpty())
647  continue;
648 
649  if (shouldDecrementOffset)
650  {
651  storageQueue.DecrementOffset(1);
652  continue;
653  }
654 
655  container = m_aRegisteredContainers[0];
656  shouldDecrementOffset = true;
657 
658  if (container)
659  {
660  m_fAggregatedResourceValue -= container.GetResourceValue();
661  m_fAggregatedMaxResourceValue -= container.GetMaxResourceValue();
662 
663  m_Interactor.OnContainerUnregistered(container);
664  }
665 
666  storageQueue.UnregisterFirstContainer();
667  }
668 
669  return container;
670  }
671 
672  //------------------------------------------------------------------------------------------------
673  override SCR_ResourceContainer PopContainerAt(int index)
674  {
675  if (!m_aRegisteredContainers.IsIndexValid(index))
676  return null;
677 
678  int offsetPosition;
679  bool shouldDecrementOffset;
680  SCR_ResourceContainerStorageQueue<ResourceInteractorType> storageQueue;
681  SCR_ResourceContainer container;
682 
683  foreach (SCR_ResourceStoragePolicyBase<ResourceInteractorType> policy: m_StoragePolicies)
684  {
685  storageQueue = policy.GetStorageQueue();
686 
687  if (storageQueue.IsEmpty())
688  continue;
689 
690  if (shouldDecrementOffset)
691  {
692  storageQueue.DecrementOffset(1);
693  continue;
694  }
695 
696  offsetPosition = storageQueue.GetOffsetPosition();
697 
698  if (index < offsetPosition || index > offsetPosition + storageQueue.GetContainerCount())
699  continue;
700 
701  container = m_aRegisteredContainers[index];
702  shouldDecrementOffset = true;
703 
704  storageQueue.UnregisterContainerAt(index - offsetPosition);
705 
706  if (container)
707  {
708  m_fAggregatedResourceValue -= container.GetResourceValue();
709  m_fAggregatedMaxResourceValue -= container.GetMaxResourceValue();
710 
711  m_Interactor.OnContainerUnregistered(container);
712  }
713  }
714 
715  return container;
716  }
717 
718  override void PerformSorting()
719  {
720  array<SCR_ResourceContainer> registeredContainers = Clear();
721 
722  foreach (SCR_ResourceContainer container: registeredContainers)
723  {
724  if (!container)
725  continue;
726 
727  m_Interactor.RegisterContainer(container);
728  }
729  }
730 
731  //------------------------------------------------------------------------------------------------
733  override array<SCR_ResourceContainer> Clear()
734  {
735  array<SCR_ResourceContainer> clearedContainers = {};
736  clearedContainers.Copy(m_aRegisteredContainers);
737 
738  for (int index = m_aRegisteredContainers.Count() - 1; index >= 0; --index)
739  {
740  m_Interactor.UnregisterContainer(index);
741  }
742 
743  m_aRegisteredContainers.Clear();
744 
745  m_fAggregatedResourceValue = SCR_ResourceActor.RESOURCES_LOWER_LIMIT;
746  m_fAggregatedMaxResourceValue = SCR_ResourceActor.RESOURCES_LOWER_LIMIT;
747 
748  foreach (SCR_ResourceStoragePolicyBase<ResourceInteractorType> policy: m_StoragePolicies)
749  {
750  policy.ResetStorageQueue();
751  }
752 
753  return clearedContainers;
754  }
755 
756  //------------------------------------------------------------------------------------------------
757  override void Initialize(notnull SCR_ResourceInteractor interactor)
758  {
759  SCR_ResourceContainerStorageQueue<ResourceInteractorType> storageQueue;
760  m_Interactor = ResourceInteractorType.Cast(interactor);
761 
762  foreach (int idx, SCR_ResourceStoragePolicyBase<ResourceInteractorType> policy: m_StoragePolicies)
763  {
764  storageQueue = policy.GetStorageQueue();
765 
766  if (!storageQueue)
767  {
768  // TODO: Do proper default behavior or just block progress perhaps?.
769  storageQueue = new SCR_ResourceContainerStorageQueue<ResourceInteractorType>();
770 
771  policy.SetStorageQueue(storageQueue);
772 
773  Print(string.Format("%1:\n\tPolicy at index %2 does not have a defined storage queue.\n\tUsing default storage queue instead.", Type().ToString(), idx), LogLevel.WARNING);
774  }
775 
776  storageQueue.Initialize(m_aRegisteredContainers);
777  }
778  }
779 
780  //------------------------------------------------------------------------------------------------
781  override float UpdateContainerResourceValue(float currentValue, float previousValue)
782  {
783  float previousAggregatedValue = m_fAggregatedResourceValue;
784  m_fAggregatedResourceValue += currentValue - previousValue;
785 
786  return previousAggregatedValue;
787  }
788 
789  //------------------------------------------------------------------------------------------------
790  override float UpdateContainerMaxResourceValue(float currentValue, float previousValue)
791  {
792  float previousAggregatedMaxValue = m_fAggregatedMaxResourceValue;
793  m_fAggregatedMaxResourceValue += currentValue - previousValue;
794 
795  return previousAggregatedMaxValue;
796  }
797 };
Clear
void Clear(GenericEntity entity)
Definition: SCR_GadgetManagerComponent.c:105
EResourceContainerStorageType
EResourceContainerStorageType
Definition: SCR_ResourceContainer.c:17
SCR_ResourceContainerQueueBase
Definition: SCR_ResourceContainerQueue.c:2
SCR_ResourceActor
Definition: SCR_ResourceConsumer.c:2
Attribute
typedef Attribute
Post-process effect of scripted camera.
Initialize
void Initialize()
Definition: SCR_CampaignMilitaryBaseComponent.c:181
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition: SCR_DestructionSynchronizationComponent.c:17
SCR_ResourceContainer
Definition: SCR_ResourceContainer.c:34
position
vector position
Definition: SCR_DestructibleTreeV2.c:30
BaseContainerProps
SCR_AIGoalReaction_Follow BaseContainerProps
Handles insects that are supposed to be spawned around selected prefabs defined in prefab names array...
Definition: SCR_AIGoalReaction.c:468