DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
BoatHud.c
См. документацию.
1// Boat HUD UI
3{
4 protected const float ENGINE_BLINK_DURATION = 3;
5
6 protected ImageWidget m_SpeedPointer;
7 protected ImageWidget m_EngineLight;
8 protected ImageWidget m_FuelLight;
9
10 protected bool m_HasEngine;
11 protected int m_EngagedGear;
12 protected int m_EngineHealthLevel;
13 protected float m_FuelLevel;
14 protected float m_TimeSinceEngineHit;
15 protected float m_TimeSinceEngineBlink;
17
18 protected ref WidgetFadeTimer m_FadeTimer = new WidgetFadeTimer();
19
20 override void Init(Widget vehicleHudPanels)
21 {
22 super.Init(vehicleHudPanels);
23
24 m_VehiclePanel = GetGame().GetWorkspace().CreateWidgets("gui/layouts/day_z_hud_boats.layout", vehicleHudPanels);
25
26 m_SpeedPointer = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("SpeedPointer") );
27 m_EngineLight = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("EngineLight"));
28 m_FuelLight = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("FuelLight"));
29
30 m_VehicleCurrentGearValue = TextWidget.Cast( m_VehiclePanel.FindAnyWidget("Current") );
31 m_VehicleNextGearValue = TextWidget.Cast( m_VehiclePanel.FindAnyWidget("Next") );
32 m_VehiclePrevGearValue = TextWidget.Cast( m_VehiclePanel.FindAnyWidget("Prev") );
33 }
34
35 override void ShowVehicleInfo(PlayerBase player)
36 {
37 HumanCommandVehicle hcv = player.GetCommand_Vehicle();
38 if (!hcv)
39 return;
40
42
43 m_VehiclePanel.Show(true);
44
46 m_FuelLevel = -1;
47
48 if (m_CurrentVehicle.HasEngine())
49 m_HasEngine = true;
50
51 float gearNeutral = m_CurrentVehicle.GetNeutralGear();
52 m_VehicleGearTable.Set(gearNeutral - 2, "");
53 m_VehicleGearTable.Set(gearNeutral - 1, "R");
54 m_VehicleGearTable.Set(gearNeutral, "N");
55 m_VehicleGearTable.Set(gearNeutral + 1, "F");
56 m_VehicleGearTable.Set(gearNeutral + 2, "");
57
58 m_EngagedGear = -10; // force initial update
59 }
60
61 override void HideVehicleInfo()
62 {
63 m_CurrentVehicle = null;
64 m_VehicleGearTable.Clear();
65 }
66
67 override void RefreshVehicleHud(float timeslice)
68 {
69 int engineHealthLevel = m_CurrentVehicle.GetHealthLevel("Engine");
70 float fuelFraction = m_CurrentVehicle.GetFluidFraction(BoatFluid.FUEL);
71
72 if (m_EngineHealthLevel != engineHealthLevel)
73 UpdateEngineIcon(engineHealthLevel);
74
75 if (m_FuelLevel != fuelFraction)
76 UpdateFuelIcon(fuelFraction);
77
78 if (m_CurrentVehicle.HasEngineZoneReceivedHit())
80
82 UpdateEngineBlink(timeslice);
83
85 UpdateGear();
86 }
87
88 protected void UpdateEngineIcon(int level)
89 {
90 m_EngineHealthLevel = level;
91
93 {
94 m_EngineLight.SetColor(COLOR_WHITE);
95 m_EngineLight.SetAlpha(0);
96 }
98 {
100 m_EngineLight.SetAlpha(1);
101 }
102 }
103
104 protected void UpdateFuelIcon(float level)
105 {
106 m_FuelLevel = level;
107
108 if (m_FuelLevel > 0.45)
109 {
110 m_FuelLight.SetAlpha(0);
111 return;
112 }
113 else if (m_FuelLevel > 0.15)
115 else if (m_FuelLevel > 0)
117 else
119
120 m_FuelLight.SetAlpha(1);
121 }
122
123 protected void UpdateSpeedPointer()
124 {
125 if (m_HasEngine)
126 {
127 float min, max, current;
128 min = 0;
129 max = m_CurrentVehicle.EngineGetRPMMax();
130 current = Math.Clamp(m_CurrentVehicle.EngineGetRPM(), min, max);
131
132 float percentVal = Math.InverseLerp(min, max, current);
133 m_SpeedPointer.SetRotation(0, 0, Math.Lerp(225, 495, Math.AbsFloat(percentVal)), true);
134 }
135 }
136
137 protected void UpdateGear()
138 {
139 if (!m_HasEngine)
140 return;
141
142 int gear = m_CurrentVehicle.GetGear();
143 if (m_EngagedGear == gear)
144 return;
145
146 m_EngagedGear = gear;
147
151 }
152
153 protected void UpdateEngineBlink(float timeSlice)
154 {
155 m_TimeSinceEngineHit -= timeSlice;
156 if (m_TimeSinceEngineHit <= 0)
157 {
158 m_FadeTimer.Stop();
159 m_EngineLight.SetAlpha(1);
160 return;
161 }
162
163 m_TimeSinceEngineBlink -= timeSlice;
164 if (m_TimeSinceEngineBlink <= 0)
165 {
167 if (m_EngineLight.GetAlpha() == 0)
168 m_FadeTimer.FadeIn(m_EngineLight, 0.1);
169 else
170 m_FadeTimer.FadeOut(m_EngineLight, 0.1);
171 }
172 }
173
174 protected float GetSpeedometer()
175 {
176 vector transform[4];
177 m_CurrentVehicle.GetTransform(transform);
178
179 return GetVelocity(m_CurrentVehicle).InvMultiply3(transform)[2];
180 }
181}
BoatFluid
Type of vehicle's fluid. (native, do not change or extend)
Определения Boat.c:14
void UpdateEngineBlink(float timeSlice)
Определения BoatHud.c:153
override void RefreshVehicleHud(float timeslice)
Определения BoatHud.c:67
override void HideVehicleInfo()
Определения BoatHud.c:61
float m_TimeSinceEngineHit
Определения BoatHud.c:14
const float ENGINE_BLINK_DURATION
Определения BoatHud.c:4
int m_EngagedGear
Определения BoatHud.c:11
void UpdateSpeedPointer()
Определения BoatHud.c:123
float m_FuelLevel
Определения BoatHud.c:13
void UpdateFuelIcon(float level)
Определения BoatHud.c:104
void UpdateGear()
Определения BoatHud.c:137
ref WidgetFadeTimer m_FadeTimer
Определения BoatHud.c:18
BoatScript m_CurrentVehicle
Определения BoatHud.c:16
override void ShowVehicleInfo(PlayerBase player)
Определения BoatHud.c:35
ImageWidget m_EngineLight
Определения BoatHud.c:7
float GetSpeedometer()
Определения BoatHud.c:174
int m_EngineHealthLevel
Определения BoatHud.c:12
float m_TimeSinceEngineBlink
Определения BoatHud.c:15
override void Init(Widget vehicleHudPanels)
Определения BoatHud.c:20
bool m_HasEngine
Определения BoatHud.c:10
void UpdateEngineIcon(int level)
Определения BoatHud.c:88
ImageWidget m_FuelLight
Определения BoatHud.c:8
ImageWidget m_SpeedPointer
Определения BoatHud.c:6
Определения BoatHud.c:3
Определения BoatScript.c:31
proto native WorkspaceWidget GetWorkspace()
const int COLOR_DAMAGED
Определения Colors.c:22
const int COLOR_BADLY_DAMAGED
Определения Colors.c:21
const int COLOR_RUINED
Определения Colors.c:20
Определения Colors.c:4
Определения constants.c:659
proto native Transport GetTransport()
Определения human.c:690
static int GetItemHealthColor(int pHealthLevel)
Определения ItemManager.c:417
Определения ItemManager.c:2
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
Определения EnWidgets.c:220
TextWidget m_VehiclePrevGearValue
Определения VehicleHudBase.c:7
TextWidget m_VehicleNextGearValue
Определения VehicleHudBase.c:6
void VehicleHudBase()
Widget m_VehiclePanel
Определения VehicleHudBase.c:4
TextWidget m_VehicleCurrentGearValue
Определения VehicleHudBase.c:5
ref map< int, string > m_VehicleGearTable
Определения VehicleHudBase.c:9
Определения EnWidgets.c:190
proto vector InvMultiply3(vector mat[3])
Invert-transforms vector.
Определения EnConvert.c:106
proto native CGame GetGame()
const int COLOR_WHITE
Определения constants.c:63
const int STATE_WORN
Определения constants.c:849
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
static proto float AbsFloat(float f)
Returns absolute value.
proto native vector GetVelocity(notnull IEntity ent)
Returns linear velocity.
proto native external Widget CreateWidgets(string layout, Widget parentWidget=NULL, bool immedUpdate=true)
Create widgets from *.layout file.