DayZ 1.29
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 m_Strap.UpdateNVGStatus(player, false, true);
41 }
42
43 override void OnWasAttached(EntityAI parent, int slot_id)
44 {
45 super.OnWasAttached(parent, slot_id);
46
47 RotateGoggles(true);
48 m_Strap = Clothing.Cast(parent);
49 }
50
51 override void OnWasDetached(EntityAI parent, int slot_id)
52 {
53 super.OnWasDetached(parent, slot_id);
54
55 RotateGoggles(true);
56 SetPlayer(null);
57
58 PlayerBase player;
59 if (m_Strap == parent && PlayerBase.CastTo(player, parent.GetHierarchyRootPlayer()))
60 {
61 if (parent && Clothing.Cast(parent))
62 Clothing.Cast(parent).UpdateNVGStatus(player, false, true);
63 }
64
65 m_Strap = null;
66 }
67
68 override void OnWorkStart()
69 {
70 super.OnWorkStart();
71
72 PlayerBase player;
73 EntityAI headgear;
74 EntityAI glasses;
75 if (m_Strap && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()))
76 {
77 headgear = player.FindAttachmentBySlotName("Headgear");
78 glasses = player.FindAttachmentBySlotName("Eyewear");
79
80 //adjust on load - ComponentEnergyManager stores the 'working' state independently
81 if (!m_IsLowered)
82 RotateGoggles(false);
83
84 if (!g_Game.IsServer() || !g_Game.IsMultiplayer())
85 {
86 if ((headgear == m_Strap || glasses == m_Strap))
87 m_Strap.UpdateNVGStatus(player);
88 }
89 }
90 }
91
92 override void OnWorkStop()
93 {
94 super.OnWorkStop();
95
96 PlayerBase player;
97 EntityAI headgear;
98 EntityAI glasses;
99 if (m_Strap && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()))
100 {
101 headgear = player.FindAttachmentBySlotName("Headgear");
102 glasses = player.FindAttachmentBySlotName("Eyewear");
103
104 if (!g_Game.IsServer() || !g_Game.IsMultiplayer())
105 {
106 if ((headgear == m_Strap || glasses == m_Strap))
107 m_Strap.UpdateNVGStatus(player);
108 }
109 }
110 }
111
112 override void OnWork(float consumed_energy)
113 {
114 //adjust on load - ComponentEnergyManager stores the 'working' state independently
115 if (!m_IsLowered)
116 RotateGoggles(false);
117
118 PlayerBase player;
119 EntityAI headgear;
120 EntityAI glasses;
121 if (m_Strap && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()))
122 {
123 headgear = player.FindAttachmentBySlotName("Headgear");
124 glasses = player.FindAttachmentBySlotName("Eyewear");
125
126 if (!g_Game.IsServer() || !g_Game.IsMultiplayer()) // Client side
127 {
128 if ((headgear == m_Strap || glasses == m_Strap) && player.IsControlledPlayer())
129 player.AddActiveNV(GetCurrentNVType());
130 }
131 }
132 }
133
134 void RotateGoggles(bool state)
135 {
136 if (!m_Strap && !state) // disable non default rotation while not strapped
137 return;
138
139 SetAnimationPhase("rotate", !state);
140 m_IsLowered = !state;
141
142 PlayerBase player;
143 int slotId;
144 string slotName;
145 if (m_Strap && m_Strap.GetInventory().GetCurrentAttachmentSlotInfo(slotId, slotName) && PlayerBase.CastTo(player, m_Strap.GetHierarchyParent()))
146 m_Strap.UpdateNVGStatus(player);
147
148 if (GetCompEM())
149 {
150 if (!state && GetCompEM().CanWork())
151 GetCompEM().SwitchOn();
152 else
153 GetCompEM().SwitchOff();
154 }
155 }
156
157 override int GetCurrentNVType()
158 {
159 if (IsWorking())
160 {
161 if (IsUsingOptics2DModel())
162 return NVTypes.NV_GOGGLES_2D;
163
164 return NVTypes.NV_GOGGLES; //omits the widget occluder
165 }
166 else
167 {
168 return NVTypes.NV_GOGGLES_OFF;
169 }
170 }
171
172 override bool IsNVG()
173 {
174 return true;
175 }
176
180
182
185 {
186 if (GetAnimationPhase("rotate") != m_IsLowered)
187 {
188 m_IsLowered = GetAnimationPhase("rotate");
189 }
190 }
191
193 {
194 GetCompEM().SwitchOn();
195 if (GetCompEM().IsSwitchedOn())
196 m_WorkCheckTimer.Stop();
197 }
198}
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
void RemoveAction(typename actionName)
Определения AdvancedCommunication.c:252
PlayerSpawnPreset slotName
DayZGame g_Game
Определения DayZGame.c:3942
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:192
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:51
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:157
override void OnWasAttached(EntityAI parent, int slot_id)
Определения NVGoggles.c:43
void LoweredCheck()
check for animation state, if another player lowered them first (or solve by synced variable)
Определения NVGoggles.c:184
void RotateGoggles(bool state)
Определения NVGoggles.c:134
override ECachedEquipmentItemCategory GetCachedEquipmentCategory()
Определения NVGoggles.c:11
ref Timer m_WorkCheckTimer
Определения NVGoggles.c:181
override bool IsNVG()
Определения NVGoggles.c:172
override void OnWorkStop()
Определения NVGoggles.c:92
override void OnWork(float consumed_energy)
Определения NVGoggles.c:112
override void OnWorkStart()
Определения NVGoggles.c:68
void NVGoggles()
Определения NVGoggles.c:6
Определения NVGoggles.c:2
Определения DayZPlayerImplement.c:39