123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- // Car HUD
- class CarHud : VehicleHudBase
- {
- protected ImageWidget m_VehicleRPMPointer;
- protected ImageWidget m_VehicleRPMDial;
- protected ImageWidget m_VehicleRPMRedline;
- protected ImageWidget m_VehicleSpeedPointer;
- protected Widget m_VehicleTemperatureIndicator;
- protected ImageWidget m_VehicleTemperaturePointer;
- protected ImageWidget m_VehicleTemperatureLight;
- protected ImageWidget m_VehicleFuelPointer;
- protected ImageWidget m_VehicleFuelLight;
-
- protected TextWidget m_VehicleSpeedValue;
-
- protected ImageWidget m_VehicleBatteryLight;
- protected ImageWidget m_VehicleEngineLight;
- protected ImageWidget m_VehicleOilLight;
- protected ImageWidget m_VehicleHandBrakeLight;
- protected ImageWidget m_VehicleWheelLight;
-
- protected bool m_VehicleDamageZoneHitEngineState;
- protected float m_VehicleDamageZonesHitTimer;
-
- protected CarScript m_CurrentVehicle;
-
- protected int m_VehicleGearCount = -1;
- protected float m_TimeSinceLastEngineLightChange;
- protected bool m_VehicleHasCoolant;
-
- override void Init(Widget vehicleHudPanels)
- {
- super.Init(vehicleHudPanels);
-
- m_VehiclePanel = GetGame().GetWorkspace().CreateWidgets("gui/layouts/day_z_hud_cars.layout", vehicleHudPanels);
-
- m_VehicleRPMPointer = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("RPMPointer") );
- m_VehicleRPMDial = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("RPMDial") );
- m_VehicleRPMRedline = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("RPMDialRedline") );
- m_VehicleSpeedPointer = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("SpeedPointer") );
- m_VehicleSpeedValue = TextWidget.Cast( m_VehiclePanel.FindAnyWidget("SpeedValue") );
-
- m_VehicleCurrentGearValue = TextWidget.Cast( m_VehiclePanel.FindAnyWidget("Current") );
- m_VehicleNextGearValue = TextWidget.Cast( m_VehiclePanel.FindAnyWidget("Next") );
- m_VehiclePrevGearValue = TextWidget.Cast( m_VehiclePanel.FindAnyWidget("Prev") );
-
- m_VehicleBatteryLight = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("BatteryLight"));
- m_VehicleEngineLight = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("EngineLight"));
- m_VehicleOilLight = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("OilLight"));
- m_VehicleHandBrakeLight = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("HandBrakeLight"));
- m_VehicleWheelLight = ImageWidget.Cast( m_VehiclePanel.FindAnyWidget("WheelLight"));
-
- m_VehicleTemperatureIndicator = m_VehiclePanel.FindAnyWidget("TemperatureIndicator");
- m_VehicleTemperaturePointer = ImageWidget.Cast(m_VehiclePanel.FindAnyWidget("TemperaturePointer"));
- m_VehicleTemperatureLight = ImageWidget.Cast(m_VehiclePanel.FindAnyWidget("TemperatureLight"));
- m_VehicleFuelPointer = ImageWidget.Cast(m_VehiclePanel.FindAnyWidget("FuelPointer"));
- m_VehicleFuelLight = ImageWidget.Cast(m_VehiclePanel.FindAnyWidget("FuelLight"));
-
- m_VehicleGearTable.Set(-1, "");
- m_VehicleGearTable.Set(CarGear.REVERSE, "R");
- m_VehicleGearTable.Set(CarGear.NEUTRAL, "N");
- m_VehicleGearTable.Set(CarGear.FIRST, "1");
- m_VehicleGearTable.Set(CarGear.SECOND, "2");
- m_VehicleGearTable.Set(CarGear.THIRD, "3");
- m_VehicleGearTable.Set(CarGear.FOURTH, "4");
- m_VehicleGearTable.Set(CarGear.FIFTH, "5");
- m_VehicleGearTable.Set(CarGear.SIXTH, "6");
- m_VehicleGearTable.Set(CarGear.SEVENTH, "7");
- m_VehicleGearTable.Set(CarGear.EIGTH, "8");
-
- m_VehicleGearTableAuto.Set(-1, "");
- m_VehicleGearTableAuto.Set(CarAutomaticGearboxMode.R, "R");
- m_VehicleGearTableAuto.Set(CarAutomaticGearboxMode.N, "N");
- m_VehicleGearTableAuto.Set(CarAutomaticGearboxMode.D, "D");
- }
-
- override void ShowVehicleInfo(PlayerBase player)
- {
- HumanCommandVehicle hcv = player.GetCommand_Vehicle();
- if (!hcv)
- return;
-
- m_CurrentVehicle = CarScript.Cast(hcv.GetTransport());
- if (!m_CurrentVehicle)
- return;
-
- m_VehicleGearCount = m_CurrentVehicle.GetGearsCount();
- float rpm_value_red = m_CurrentVehicle.EngineGetRPMRedline() / m_CurrentVehicle.EngineGetRPMMax();
- m_VehicleRPMDial.SetMaskProgress(rpm_value_red);
- m_VehicleRPMRedline.SetMaskProgress(1 - rpm_value_red);
- m_VehiclePanel.Show(true);
- }
-
- override void HideVehicleInfo()
- {
- m_CurrentVehicle = null;
- m_VehicleGearCount = -1;
- }
-
- override void RefreshVehicleHud(float timeslice)
- {
- float rpm_value = m_CurrentVehicle.EngineGetRPM() / m_CurrentVehicle.EngineGetRPMMax();
- float rpm_value_red = m_CurrentVehicle.EngineGetRPMRedline() / m_CurrentVehicle.EngineGetRPMMax();
- float speed_value = m_CurrentVehicle.GetSpeedometerAbsolute() / 200;
-
- m_VehicleRPMPointer.SetRotation(0, 0, rpm_value * 270 - 130, true);
- m_VehicleSpeedPointer.SetRotation(0, 0, speed_value * 260 - 130, true);
- m_VehicleSpeedValue.SetText(Math.AbsInt(m_CurrentVehicle.GetSpeedometer()).ToString());
- int engineHealthLevel = m_CurrentVehicle.GetHealthLevel("Engine");
- int fuelTankHealthLevel = m_CurrentVehicle.GetHealthLevel("FuelTank");
- bool newHealth = false;
-
- //! engine
- if (m_CurrentVehicle.HasEngineZoneReceivedHit())
- {
- if (m_TimeSinceLastEngineLightChange > 0.35)
- {
- m_VehicleEngineLight.Show(!m_VehicleEngineLight.IsVisible());
- if (engineHealthLevel <= GameConstants.STATE_WORN)
- {
- m_VehicleEngineLight.SetColor(Colors.WHITE);
- }
- else
- {
- m_VehicleEngineLight.SetColor(ItemManager.GetItemHealthColor(engineHealthLevel));
- }
-
- m_VehicleEngineLight.SetAlpha(1);
- m_TimeSinceLastEngineLightChange = 0;
- }
-
- m_TimeSinceLastEngineLightChange += timeslice;
- newHealth = true;
- }
- else if (engineHealthLevel > GameConstants.STATE_WORN)
- {
- m_VehicleEngineLight.SetColor(ItemManager.GetItemHealthColor(engineHealthLevel));
- m_VehicleEngineLight.SetAlpha(1);
- m_VehicleEngineLight.Show(true);
- }
- else
- {
- m_VehicleEngineLight.Show(false);
- }
-
- //! fuel tank
- if (fuelTankHealthLevel <= GameConstants.STATE_WORN)
- {
- m_VehicleFuelLight.SetColor(Colors.WHITE);
- m_VehicleFuelLight.SetAlpha(1);
- m_VehicleFuelLight.Show(true);
- }
- else if (fuelTankHealthLevel > GameConstants.STATE_WORN)
- {
- m_VehicleFuelLight.SetColor(ItemManager.GetItemHealthColor(fuelTankHealthLevel));
- m_VehicleFuelLight.SetAlpha(1);
- m_VehicleFuelLight.Show(true);
- }
-
- //! temperature
- if (m_CurrentVehicle.IsVitalRadiator())
- {
- m_VehicleTemperatureIndicator.Show(true);
- if (m_CurrentVehicle.HasRadiator())
- {
- int radiatorHealthLevel = m_CurrentVehicle.GetRadiator().GetHealthLevel("");
- if (radiatorHealthLevel <= GameConstants.STATE_WORN)
- {
- m_VehicleTemperatureLight.SetColor(Colors.WHITE);
- m_VehicleTemperatureLight.SetAlpha(1);
- m_VehicleTemperatureLight.Show(true);
- }
- else if (radiatorHealthLevel > GameConstants.STATE_WORN)
- {
- m_VehicleTemperatureLight.SetColor(ItemManager.GetItemHealthColor(radiatorHealthLevel));
- m_VehicleTemperatureLight.SetAlpha(1);
- m_VehicleTemperatureLight.Show(true);
- }
- }
- else
- {
- m_VehicleTemperatureLight.SetColor(Colors.COLOR_RUINED);
- m_VehicleTemperatureLight.SetAlpha(1);
- m_VehicleTemperatureLight.Show(true);
- }
- }
- else
- {
- m_VehicleTemperatureIndicator.Show(false);
- }
-
- m_VehicleHandBrakeLight.Show(m_CurrentVehicle.IsHandbrakeActive());
- m_VehicleWheelLight.Show(m_CurrentVehicle.WheelIsAnyLocked());
-
- int engagedGear = -1;
- int prevGear = -1;
- int nextGear = -1;
-
- if (m_CurrentVehicle.GearboxGetType() == CarGearboxType.MANUAL)
- {
- engagedGear = m_CurrentVehicle.GetGear();
- prevGear = engagedGear - 1;
- nextGear = engagedGear + 1;
- if (engagedGear == CarGear.NEUTRAL)
- {
- prevGear = CarGear.REVERSE;
- }
- else if (engagedGear == CarGear.REVERSE)
- {
- prevGear = -1;
- nextGear = CarGear.NEUTRAL;
- }
- m_VehicleCurrentGearValue.SetText(m_VehicleGearTable.Get(engagedGear));
- m_VehicleNextGearValue.Show(nextGear < m_VehicleGearCount);
-
- m_VehicleNextGearValue.SetText(m_VehicleGearTable.Get(nextGear));
- m_VehiclePrevGearValue.SetText(m_VehicleGearTable.Get(prevGear));
- }
- else
- {
- engagedGear = m_CurrentVehicle.GearboxGetMode();
- prevGear = engagedGear - 1;
- nextGear = engagedGear + 1;
-
- m_VehicleCurrentGearValue.SetText(m_VehicleGearTableAuto.Get(engagedGear));
- m_VehicleNextGearValue.Show(nextGear < EnumTools.GetEnumSize(CarAutomaticGearboxMode));
-
- m_VehicleNextGearValue.SetText(m_VehicleGearTableAuto.Get(nextGear));
- m_VehiclePrevGearValue.SetText(m_VehicleGearTableAuto.Get(prevGear));
- }
-
- // refresh backlit
- GetDayZGame().GetBacklit().RefreshVehicleLayout(engagedGear, newHealth);
-
- m_VehicleFuelPointer.SetRotation( 0, 0, m_CurrentVehicle.GetFluidFraction( CarFluid.FUEL ) * 260 - 130, true );
- m_VehicleTemperaturePointer.SetRotation( 0, 0, -1 * m_CurrentVehicle.GetFluidFraction( CarFluid.COOLANT ) * 260 + 130, true );
- //! general hit timer reset
- if (m_VehicleDamageZonesHitTimer > 1)
- {
- m_VehicleDamageZoneHitEngineState = false;
- m_VehicleDamageZonesHitTimer = 0;
- }
-
- m_VehicleDamageZonesHitTimer += timeslice;
- }
- }
|