Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
componentsbank.c
Go to the documentation of this file.
2 {
3  private EntityAI m_EntityParent;
4  private ref Component m_Components[COMP_TYPE_COUNT];
5 
6  void ComponentsBank(EntityAI entity_parent)
7  {
8  m_EntityParent = entity_parent;
9  }
10 
11  Component GetComponent(int comp_type, string extended_class_name="")
12  {
13  if ( !Component.IsTypeExist(comp_type) )
14  {
15  Component.LogErrorBadCompType(comp_type, "EntityAI.GetComponent(int comp_type)");
16  return NULL;
17  }
18 
19  if ( !IsComponentAlreadyExist(comp_type) )
20  {
21  CreateComponent(comp_type, extended_class_name);
22  }
23 
24  return m_Components[comp_type];
25  }
26 
27  bool DeleteComponent(int comp_type)
28  {
29  if ( IsComponentAlreadyExist(comp_type) )
30  {
31  m_Components[comp_type] = NULL;
32  return true;
33  }
34 
35  return false;
36  }
37 
38  private Component CreateComponent(int comp_type, string extended_class_name="")
39  {
40  if ( !Component.IsTypeExist(comp_type) )
41  {
42  Component.LogErrorBadCompType(comp_type, "EntityAI->CreateComponent(int comp_type)");
43  return NULL;
44  }
45 
46  if ( IsComponentAlreadyExist(comp_type) )
47  {
48  Component.LogWarningAlredyExist(comp_type, "EntityAI->CreateComponent(int comp_type)");
49  return m_Components[comp_type];
50  }
51 
52 
53  string clas_name = extended_class_name;
54 
55  if ( clas_name == string.Empty )
56  {
57  clas_name = Component.GetNameByType(comp_type);
58  }
59 
60  Component comp = Component.Cast(clas_name.ToType().Spawn());
61 
62  comp.SetParentEntityAI(m_EntityParent);
63  comp.Event_OnAwake();
64 
65  m_Components[comp_type] = comp;
66 
67  comp.Event_OnInit();
68 
69  return comp;
70  }
71 
72  bool IsComponentAlreadyExist(int comp_type)
73  {
74  if ( m_Components[comp_type] != NULL )
75  {
76  return true;
77  }
78 
79  return false;
80  }
81 }
Component
Definition: componententitydebug.c:1
COMP_TYPE_COUNT
const int COMP_TYPE_COUNT
Definition: component.c:12
Empty
Empty
Definition: hand_states.c:3
EntityAI
Definition: building.c:5
ComponentsBank
Definition: componentsbank.c:1