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