DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
NVGoggles.c
См. документацию.
2{
6
7 void NVGoggles()
8 {
9 RotateGoggles(true);
11 }
12
13 override void SetActions()
14 {
15 super.SetActions();
16
19 }
20
21 override void EEItemAttached(EntityAI item, string slot_name)
22 {
23 super.EEItemAttached( item, slot_name );
24
25 if ( GetCompEM().CanWork() && m_IsLowered )
26 m_WorkCheckTimer.Run(0.1,this,"SwitchOnNVGCheck",null,true);
27 //GetCompEM().SwitchOn();
28 }
29
30 override void EEItemDetached(EntityAI item, string slot_name)
31 {
32 super.EEItemDetached( item, slot_name );
33
34 GetCompEM().SwitchOff();
35 }
36
37 override void OnWasAttached( EntityAI parent, int slot_id )
38 {
39 super.OnWasAttached(parent, slot_id);
40 RotateGoggles(true);
41
42 m_Strap = Clothing.Cast(parent);
43 /*if (m_Strap)
44 SetPlayer(PlayerBase.Cast(m_Strap.GetHierarchyParent()));*/
45 }
46
47 override void OnWasDetached( EntityAI parent, int slot_id )
48 {
49 super.OnWasDetached(parent, slot_id);
50 RotateGoggles(true);
51
52 PlayerBase player;
53 if ( m_Strap == parent && PlayerBase.CastTo(player, parent.GetHierarchyRootPlayer()) )
54 {
55 if ( parent && Clothing.Cast(parent) )
56 {
57 Clothing.Cast(parent).UpdateNVGStatus(player,false,true);
58 }
59 }
60
61 m_Strap = null;
62 //SetPlayer(null);
63 }
64
65 override void 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 {
78 RotateGoggles(false);
79 }
80
81 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) // Client side
82 {
83 if ( (headgear == m_Strap || glasses == m_Strap) && player.IsControlledPlayer() )
84 {
85 player.AddActiveNV(NVTypes.NV_GOGGLES);
86 }
87 }
88 }
89 }
90
91 override void OnWorkStop()
92 {
93 PlayerBase player;
94 EntityAI headgear;
95 EntityAI glasses;
96 if ( m_Strap && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()) )
97 {
98 headgear = player.FindAttachmentBySlotName("Headgear");
99 glasses = player.FindAttachmentBySlotName("Eyewear");
100
101 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) // Client side
102 {
103 if ( (headgear == m_Strap || glasses == m_Strap) && player.IsControlledPlayer() )
104 {
105 player.RemoveActiveNV(NVTypes.NV_GOGGLES);
106 }
107 }
108 }
109 }
110
111 override void OnWork( float consumed_energy )
112 {
113 //adjust on load - ComponentEnergyManager stores the 'working' state independently
114 if ( !m_IsLowered )
115 {
116 RotateGoggles(false);
117 }
118
119 PlayerBase player;
120 EntityAI headgear;
121 EntityAI glasses;
122 if ( m_Strap && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()) )
123 {
124 headgear = player.FindAttachmentBySlotName("Headgear");
125 glasses = player.FindAttachmentBySlotName("Eyewear");
126
127 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) // Client side
128 {
129 if ( (headgear == m_Strap || glasses == m_Strap) && player.IsControlledPlayer() )
130 {
131 player.AddActiveNV(NVTypes.NV_GOGGLES);
132 }
133 }
134 }
135 }
136
137 void LoweredCheck() //check for animation state, if another player lowered them first (or solve by synced variable)
138 {
139 if ( GetAnimationPhase("rotate") != m_IsLowered )
140 {
141 m_IsLowered = GetAnimationPhase("rotate");
142 }
143 }
144
145 void RotateGoggles(bool state)
146 {
147 if (!m_Strap && !state) // disable non default rotation while not strapped
148 return;
149
150 //if ( GetAnimationPhase("rotate") != state ) //useless?
151 SetAnimationPhase("rotate",!state);
152 m_IsLowered = !state;
153
154 PlayerBase player;
155 int slot_id;
156 string slot_name;
157 if ( m_Strap && m_Strap.GetInventory().GetCurrentAttachmentSlotInfo(slot_id,slot_name) && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent())/*&& slot_id == InventorySlots.EYEWEAR*/ )
158 {
159 player.SetNVGLowered(m_IsLowered);
160 }
161
162 if ( GetCompEM() )
163 {
164 if ( !state && GetCompEM().CanWork() )
165 GetCompEM().SwitchOn();
166 else
167 GetCompEM().SwitchOff();
168 }
169 }
170
172 {
173 //Print("SwitchOnNVGCheck");
174 GetCompEM().SwitchOn();
175 if (GetCompEM().IsSwitchedOn())
176 {
177 m_WorkCheckTimer.Stop();
178 }
179 }
180
181 override int GetCurrentNVType()
182 {
183 if (IsWorking())
184 {
185 //m_CurrentOpticMode
186 switch (m_CurrentOpticMode)
187 {
188 /*case GameConstants.OPTICS_STATE_DAY:
189 return NVTypes.NV_GOGGLES_WHATEVER;
190
191 case GameConstants.OPTICS_STATE_NIGHTVISION:
192 return NVTypes.NV_GOGGLES;*/
193 default:
194 return NVTypes.NV_GOGGLES;
195 }
196 Error("Undefined optic mode of " + this);
197 return NVTypes.NONE;
198 }
199 else
200 {
201 return NVTypes.NV_GOGGLES_OFF;
202 }
203 }
204
205 override bool IsNVG()
206 {
207 return true;
208 }
209}
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
void RemoveAction(typename actionName)
Определения AdvancedCommunication.c:252
NVTypes
Определения DayZPlayerCamera_Base.c:55
Определения Armband_ColorBase.c:2
Определения Building.c:6
Определения PlayerBaseClient.c:2
void SwitchOnNVGCheck()
Определения NVGoggles.c:171
override void SetActions()
Определения NVGoggles.c:13
override void EEItemAttached(EntityAI item, string slot_name)
Определения NVGoggles.c:21
override void OnWasDetached(EntityAI parent, int slot_id)
Определения NVGoggles.c:47
Clothing m_Strap
Определения NVGoggles.c:4
override void EEItemDetached(EntityAI item, string slot_name)
Определения NVGoggles.c:30
bool m_IsLowered
Определения NVGoggles.c:3
override int GetCurrentNVType()
Определения NVGoggles.c:181
override void OnWasAttached(EntityAI parent, int slot_id)
Определения NVGoggles.c:37
void LoweredCheck()
Определения NVGoggles.c:137
void RotateGoggles(bool state)
Определения NVGoggles.c:145
ref Timer m_WorkCheckTimer
Определения NVGoggles.c:5
override bool IsNVG()
Определения NVGoggles.c:205
override void OnWorkStop()
Определения NVGoggles.c:91
override void OnWork(float consumed_energy)
Определения NVGoggles.c:111
override void OnWorkStart()
Определения NVGoggles.c:65
void NVGoggles()
Определения NVGoggles.c:7
Определения NVGoggles.c:2
Определения DayZPlayerImplement.c:63
proto native CGame GetGame()
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90