Files
Ransom-s-wake/game/presentation/cockpit/cockpit_hud.gd
T

62 lines
2.2 KiB
GDScript

class_name CockpitHud
extends Control
const DiveUpdate = preload("res://game/domain/dive/dive_update.gd")
const DiveAlertLevel = preload("res://game/domain/dive/dive_alert_level.gd")
const DiveTerminalReason = preload("res://game/domain/dive/dive_terminal_reason.gd")
const VehicleTelemetry = preload("res://game/application/dive/vehicle_telemetry.gd")
@onready var _alert_panel: PanelContainer = %AlertPanel
@onready var _alert_label: Label = %AlertLabel
@onready var _ejection_panel: PanelContainer = %EjectionPanel
@onready var _ejection_label: Label = %EjectionLabel
@onready var _terminal_panel: PanelContainer = %TerminalPanel
@onready var _terminal_label: Label = %TerminalLabel
func present(update: DiveUpdate, telemetry: VehicleTelemetry) -> void:
if update == null or update.snapshot == null or telemetry == null:
return
var snapshot = update.snapshot
_alert_panel.visible = snapshot.alerts.maximum != DiveAlertLevel.Value.NORMAL
_alert_label.text = "ALERTE · %s" % _alert_text(snapshot.alerts.maximum)
_ejection_panel.visible = snapshot.ejection.held_seconds > 0.0
_ejection_label.text = "ÉJECTION %.0f %%" % (snapshot.ejection.ratio * 100.0)
_terminal_panel.visible = snapshot.is_terminal()
if snapshot.is_terminal():
_terminal_label.text = "%s\nÉchap pour ouvrir le menu de pause." % [
_terminal_text(snapshot.terminal_reason)
]
func alert_overlay_visible() -> bool:
return _alert_panel.visible
func _alert_text(level: DiveAlertLevel.Value) -> String:
match level:
DiveAlertLevel.Value.NORMAL:
return tr("NORMAL")
DiveAlertLevel.Value.ATTENTION:
return tr("ATTENTION")
DiveAlertLevel.Value.RETURN:
return tr("RETOUR")
DiveAlertLevel.Value.CRITICAL:
return tr("CRITIQUE")
DiveAlertLevel.Value.FAILURE:
return tr("DÉFAILLANCE")
return tr("INCONNU")
func _terminal_text(reason: DiveTerminalReason.Value) -> String:
match reason:
DiveTerminalReason.Value.VOLUNTARY_EJECTION:
return tr("ÉJECTION DÉCLENCHÉE")
DiveTerminalReason.Value.OXYGEN_DEPLETED:
return tr("OXYGÈNE ÉPUISÉ")
DiveTerminalReason.Value.HULL_DESTROYED:
return tr("COQUE DÉTRUITE")
DiveTerminalReason.Value.RETURNED:
return tr("RETOUR TERMINÉ")
return tr("PLONGÉE TERMINÉE")