DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Construction.c
См. документацию.
1
3{
5
6 void Construction( EntityAI parent )
7 {
8 m_ConstructionParts = new map<string, ref ConstructionPart>;
9
10 //set parent object
11 SetParent(parent);
12 }
13
14 //legacy constructor (unused)
16 {
17 m_ConstructionParts = new map<string, ref ConstructionPart>;
18 SetParent(parent);
19 }
20
21 override void Init()
22 {
24 }
25
26 override void InitBaseState()
27 {
28 if (LogManager.IsBaseBuildingLogEnable()) bsbDebugPrint("[bsb] Construction " + Object.GetDebugName(m_EntityParent) + " InitBaseState");
29
30 m_Parent.InitBaseState();
32 }
33
34 override protected typename GetDefaultPartInstanceTypename()
35 {
36 return ConstructionPart;
37 }
38
39 //BB parent
41 {
42 return m_Parent;
43 }
44 override protected void SetParent( EntityAI parent )
45 {
46 super.SetParent(parent);
47
48 m_Parent = BaseBuildingBase.Cast(parent);
49 }
50
51 //BuildPart
52 override void BuildPartServerEx(Man player, string part_name, int action_id)
53 {
54 super.BuildPartServerEx(player,part_name,action_id);
55
56 //call events, 'special' BBB handling, TODO: some parameter into BBB to allow the new handling?
57 if (m_Parent)
58 {
59 //reset DamageZone health
60 string damageZone;
61 if (DamageSystem.GetDamageZoneFromComponentName(m_EntityParent,part_name,damageZone))
62 {
63 m_EntityParent.SetAllowDamage(true);
64 m_EntityParent.SetHealthMax(damageZone);
65 m_EntityParent.ProcessInvulnerabilityCheck(m_EntityParent.GetInvulnerabilityTypeString());
66 }
67
68 m_Parent.OnPartBuiltServer(player, part_name, action_id);
69 }
70 else
71 {
72 ProcessOnPartBuiltServer(player, part_name, action_id);
73 }
74 }
75
76 //DismantlePart
77 override void DismantlePartServerEx(Man player, string part_name, int action_id)
78 {
79 super.DismantlePartServerEx(player,part_name,action_id);
80
81 //call events, 'special' BBB handling, TODO: some parameter into BBB to allow the new handling?
82 if (m_Parent)
83 {
84 m_Parent.OnPartDismantledServer(player, part_name, action_id);
85 }
86 else
87 {
88 ProcessOnPartDismantledServer(player, part_name, action_id);
89 }
90 }
91
92 //DestroyPart
93 override void DestroyPartServer( Man player, string part_name, int action_id, bool destroyed_by_connected_part = false )
94 {
95 super.DestroyPartServer(player,part_name,action_id,destroyed_by_connected_part);
96
97 //call events, 'special' BBB handling, TODO: some parameter into BBB to allow the new handling?
98 if (m_Parent)
99 {
100 m_Parent.OnPartDestroyedServer(player, part_name, action_id);
101 DestroyConnectedParts(part_name);
102 }
103 else
104 {
105 ProcessOnPartDestroyedServer(player, part_name, action_id, destroyed_by_connected_part);
106 }
107
108 //set DamageZone health to zero (redundant?)
109 string damageZone;
110 if (DamageSystem.GetDamageZoneFromComponentName(m_EntityParent,part_name,damageZone) && m_EntityParent.GetHealth(damageZone,"Health") > 0)
111 {
112 m_EntityParent.SetHealth(damageZone,"Health",0);
113 }
114 }
115
116 override void OnHealthLevelChanged(int oldLevel, int newLevel, string zone)
117 {
118 super.OnHealthLevelChanged(oldLevel, newLevel, zone);
119
120 string partName = zone;
121 partName.ToLower();
122
123 if (newLevel == GameConstants.STATE_RUINED)
124 {
125 //barbed wire handling (hack-ish)
126 if (partName.Contains("barbed"))
127 {
128 BarbedWire barbedWire = BarbedWire.Cast(m_Parent.FindAttachmentBySlotName(zone));
129 if (barbedWire)
130 barbedWire.SetMountedState( false );
131 }
132 }
133 }
134
136 override bool ExceptionCheck(string part_name)
137 {
138 if (super.ExceptionCheck(part_name))
139 return true;
140
141 //gate hack
142 ConstructionPart part = GetConstructionPart(part_name);
143 if (part.IsGate())
144 {
145 if( GetConstructionPart("wall_base_down").IsBuilt() || GetConstructionPart("wall_base_up").IsBuilt() )
146 return true;
147 }
148 return false;
149 }
150
151 //Returns (first found) gate construction part
153 {
155 {
156 if (part.IsGate())
157 return part;
158 }
159
160 return NULL;
161 }
162}
ConstructionPart GetConstructionPart()
Определения ActionPartInfo.c:235
class BaseBuildingBase extends ItemBase bsbDebugPrint(string s)
Определения BaseBuildingBase.c:1291
void ConstructionBase(EntityAI parent)
Определения ConstructionBase.c:58
void ProcessOnPartDestroyedServer(Man player, string part_name, int action_id, bool destroyed_by_connected_part=false)
Определения ConstructionBase.c:419
void ProcessOnPartDismantledServer(Man player, string part_name, int action_id)
Определения ConstructionBase.c:405
void ProcessOnPartBuiltServer(Man player, string part_name, int action_id)
Определения ConstructionBase.c:379
ref array< ConstructionPart > m_ConstructionPartArray
INSTANCED construction part data;.
Определения ConstructionBase.c:43
void UpdateConstructionParts()
Parse type data and create part instance data objects.
Определения ConstructionBase.c:517
void DestroyConnectedParts(string part_name)
Определения ConstructionBase.c:223
void UpdatePhysics()
update ALL parts physics. Sets hide first, then shows the rest. Use only if the update queue system w...
Определения ConstructionBase.c:490
EntityAI m_EntityParent
Определения ConstructionBase.c:45
bool IsBuilt()
Определения ConstructionPart.c:677
Определения Fence.c:2
BaseBuildingBase GetParent()
Определения Construction.c:40
ConstructionPart GetGateConstructionPart()
Определения Construction.c:152
override void Init()
Определения Construction.c:21
override void InitBaseState()
Определения Construction.c:26
void SetParent(EntityAI parent)
Определения Construction.c:44
override void DismantlePartServerEx(Man player, string part_name, int action_id)
Определения Construction.c:77
override void DestroyPartServer(Man player, string part_name, int action_id, bool destroyed_by_connected_part=false)
Определения Construction.c:93
void Construction(BaseBuildingBase parent)
Определения Construction.c:15
override bool ExceptionCheck(string part_name)
Exceptions from 'dependent parts' hierarchy are handled here.
Определения Construction.c:136
GetDefaultPartInstanceTypename()
Определения Construction.c:34
override void BuildPartServerEx(Man player, string part_name, int action_id)
Определения Construction.c:52
void Construction(EntityAI parent)
Определения Construction.c:6
override void OnHealthLevelChanged(int oldLevel, int newLevel, string zone)
Определения Construction.c:116
BaseBuildingBase m_Parent
Определения Construction.c:4
bool IsGate()
Определения ConstructionPart.c:278
Instanced construction part data classes for dynamic data, statics now stored on EntityType level in ...
Определения ConstructionPart.c:4
static bool IsBaseBuildingLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:809
Определения ObjectTyped.c:2
Определения Transport.c:70
const int STATE_RUINED
Определения 3_Game/DayZ/constants.c:909
bool Contains(string sample)
Returns true if sample is substring of string.
Определения EnString.c:286
proto int ToLower()
Changes string to lowercase. Returns length.