DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
NVGoggles.c
См. документацию.
2{
5
6 void NVGoggles()
7 {
8 RotateGoggles(true);
9 }
10
15
16 override void SetActions()
17 {
18 super.SetActions();
19
22 }
23
24 override void EEItemAttached(EntityAI item, string slot_name)
25 {
26 super.EEItemAttached(item, slot_name);
27
28 if (GetCompEM().CanWork() && m_IsLowered)
29 GetCompEM().SwitchOn();
30 }
31
32 override void EEItemDetached(EntityAI item, string slot_name)
33 {
34 super.EEItemDetached(item, slot_name);
35
36 RotateGoggles(true);
37
38 PlayerBase player;
39 if (m_Strap && PlayerBase.CastTo(player, GetHierarchyRootPlayer()))
40 {
41 if (!g_Game.IsDedicatedServer())
42 {
43 EntityAI headgear = player.FindAttachmentBySlotName("Headgear");
44 EntityAI glasses = player.FindAttachmentBySlotName("Eyewear");
45
46 if ((headgear == m_Strap || glasses == m_Strap))
47 m_Strap.UpdateNVGStatus(player, false, true);
48 }
49 }
50 }
51
52 override void OnWasAttached(EntityAI parent, int slot_id)
53 {
54 super.OnWasAttached(parent, slot_id);
55
56 RotateGoggles(true);
57 m_Strap = Clothing.Cast(parent);
58 }
59
60 override void OnWasDetached(EntityAI parent, int slot_id)
61 {
62 super.OnWasDetached(parent, slot_id);
63
64 RotateGoggles(true);
65 SetPlayer(null);
66
67 PlayerBase player;
68 if (m_Strap == parent && PlayerBase.CastTo(player, parent.GetHierarchyRootPlayer()))
69 {
70 if (!g_Game.IsDedicatedServer())
71 {
72 EntityAI headgear = player.FindAttachmentBySlotName("Headgear");
73 EntityAI glasses = player.FindAttachmentBySlotName("Eyewear");
74
75 if ((headgear == m_Strap || glasses == m_Strap))
76 m_Strap.UpdateNVGStatus(player, false, true);
77 }
78 }
79
80 m_Strap = null;
81 }
82
83 override float GetProtectionLevel(int type, bool consider_filter = false, int system = 0)
84 {
86 return 0.0;
87
88 if (m_IsLowered)
89 {
90 if (type == DEF_DUST_PARTICLE_EYES)
91 return 1.0;
92 }
93
94 return super.GetProtectionLevel(type, consider_filter, system);
95 }
96
97 override void OnWorkStart()
98 {
99 super.OnWorkStart();
100
101 PlayerBase player;
102 if (m_Strap && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()))
103 {
104 EntityAI headgear = player.FindAttachmentBySlotName("Headgear");
105 EntityAI glasses = player.FindAttachmentBySlotName("Eyewear");
106
107 //adjust on load - ComponentEnergyManager stores the 'working' state independently
108 if (!m_IsLowered)
109 RotateGoggles(false);
110
111 if (!g_Game.IsServer() || !g_Game.IsMultiplayer())
112 {
113 if ((headgear == m_Strap || glasses == m_Strap))
114 m_Strap.UpdateNVGStatus(player);
115 }
116 }
117 }
118
119 override void OnWorkStop()
120 {
121 super.OnWorkStop();
122
123 PlayerBase player;
124 if (m_Strap && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()))
125 {
126 EntityAI headgear = player.FindAttachmentBySlotName("Headgear");
127 EntityAI glasses = player.FindAttachmentBySlotName("Eyewear");
128
129 if (!g_Game.IsServer() || !g_Game.IsMultiplayer())
130 {
131 if ((headgear == m_Strap || glasses == m_Strap))
132 m_Strap.UpdateNVGStatus(player);
133 }
134 }
135 }
136
137 override void OnWork(float consumed_energy)
138 {
139 //adjust on load - ComponentEnergyManager stores the 'working' state independently
140 if (!m_IsLowered)
141 RotateGoggles(false);
142
143 PlayerBase player;
144 EntityAI headgear;
145 EntityAI glasses;
146 if (m_Strap && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()))
147 {
148 headgear = player.FindAttachmentBySlotName("Headgear");
149 glasses = player.FindAttachmentBySlotName("Eyewear");
150
151 if (!g_Game.IsServer() || !g_Game.IsMultiplayer()) // Client side
152 {
153 if ((headgear == m_Strap || glasses == m_Strap) && player.IsControlledPlayer())
154 player.AddActiveNV(GetCurrentNVType());
155 }
156 }
157 }
158
159 void RotateGoggles(bool state)
160 {
161 if (!m_Strap && !state) // disable non default rotation while not strapped
162 return;
163
164 SetAnimationPhase("rotate", !state);
165 m_IsLowered = !state;
166
167 PlayerBase player;
168 int slotId;
169 string slotName;
170 if (m_Strap && m_Strap.GetInventory().GetCurrentAttachmentSlotInfo(slotId, slotName) && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()))
171 m_Strap.UpdateNVGStatus(player);
172
173 if (GetCompEM())
174 {
175 if (!state && GetCompEM().CanWork())
176 GetCompEM().SwitchOn();
177 else
178 GetCompEM().SwitchOff();
179 }
180 }
181
182 override int GetCurrentNVType()
183 {
184 if (IsWorking())
185 {
186 if (IsUsingOptics2DModel())
187 return NVTypes.NV_GOGGLES_2D;
188
189 return NVTypes.NV_GOGGLES; //omits the widget occluder
190 }
191 else
192 {
193 return NVTypes.NV_GOGGLES_OFF;
194 }
195 }
196
197 override bool IsNVG()
198 {
199 return true;
200 }
201
205
207
210 {
211 if (GetAnimationPhase("rotate") != m_IsLowered)
212 {
213 m_IsLowered = GetAnimationPhase("rotate");
214 }
215 }
216
218 {
219 GetCompEM().SwitchOn();
220 if (GetCompEM().IsSwitchedOn())
221 m_WorkCheckTimer.Stop();
222 }
223}
bool IsDamageDestroyed(ActionTarget target)
Определения ActionBase.c:1275
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
void RemoveAction(typename actionName)
Определения AdvancedCommunication.c:252
PlayerSpawnPreset slotName
DayZGame g_Game
Определения DayZGame.c:4074
NVTypes
Определения DayZPlayerCamera_Base.c:55
ECachedEquipmentItemCategory
Определения ECachedEquipmentItemCategory.c:2
void SetPlayer(Man player)
Определения PlayerStatsPCO.c:67
Определения Armband_ColorBase.c:2
Определения PlayerBaseClient.c:2
void SwitchOnNVGCheck()
Определения NVGoggles.c:217
override void SetActions()
Определения NVGoggles.c:16
override void EEItemAttached(EntityAI item, string slot_name)
Определения NVGoggles.c:24
override void OnWasDetached(EntityAI parent, int slot_id)
Определения NVGoggles.c:60
Clothing m_Strap
Определения NVGoggles.c:4
override void EEItemDetached(EntityAI item, string slot_name)
Определения NVGoggles.c:32
bool m_IsLowered
Определения NVGoggles.c:3
override int GetCurrentNVType()
Определения NVGoggles.c:182
override void OnWasAttached(EntityAI parent, int slot_id)
Определения NVGoggles.c:52
void LoweredCheck()
check for animation state, if another player lowered them first (or solve by synced variable)
Определения NVGoggles.c:209
void RotateGoggles(bool state)
Определения NVGoggles.c:159
override float GetProtectionLevel(int type, bool consider_filter=false, int system=0)
Определения NVGoggles.c:83
override ECachedEquipmentItemCategory GetCachedEquipmentCategory()
Определения NVGoggles.c:11
ref Timer m_WorkCheckTimer
Определения NVGoggles.c:206
override bool IsNVG()
Определения NVGoggles.c:197
override void OnWorkStop()
Определения NVGoggles.c:119
override void OnWork(float consumed_energy)
Определения NVGoggles.c:137
override void OnWorkStart()
Определения NVGoggles.c:97
void NVGoggles()
Определения NVGoggles.c:6
Определения NVGoggles.c:2
Определения DayZPlayerImplement.c:39
const int DEF_DUST_PARTICLE_EYES
Определения 3_Game/DayZ/constants.c:550