Files
Ransom-s-wake/game/presentation/sonar/sonar_display.gd
T

69 lines
1.8 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
class_name SonarDisplay
extends Control
const SonarScan = preload("res://game/domain/sonar/sonar_scan.gd")
const SonarScanState = preload("res://game/domain/sonar/sonar_scan_state.gd")
const BathymetricSonarRendererScript = preload(
"res://game/presentation/sonar/sonar_relief_renderer.gd"
)
@onready var _renderer: Node = %SonarReliefRenderer
@onready var _expanded_panel: PanelContainer = %ExpandedPanel
@onready var _expanded_view: TextureRect = %ExpandedView
@onready var _status_label: Label = %StatusLabel
func _ready() -> void:
_expanded_view.texture = _renderer.render_texture()
_expanded_panel.visible = false
func present(
current_scan: SonarScan,
previous_scan: SonarScan,
visible_rows: int,
previous_opacity: float
) -> void:
if current_scan == null:
_status_label.text = "SONAR PRÊT · F POUR ÉMETTRE"
return
_renderer.present(current_scan, previous_scan, visible_rows, previous_opacity)
_status_label.text = "%s · %.0f %% · %.0f–%.0f m · %d CONTACT(S)" % [
_state_text(current_scan.state),
current_scan.reveal_progress * 100.0,
current_scan.minimum_elevation_m,
current_scan.maximum_elevation_m,
_renderer.visible_contact_count(),
]
func toggle_expanded() -> void:
_expanded_panel.visible = not _expanded_panel.visible
func is_expanded() -> bool:
return _expanded_panel.visible
func sonar_texture() -> Texture2D:
return _renderer.render_texture()
func built_row_count() -> int:
return _renderer.built_row_count()
func status_text() -> String:
return _status_label.text
func _state_text(state: SonarScanState.Value) -> String:
match state:
SonarScanState.Value.REVEALING:
return "RELEVÉ EN COURS"
SonarScanState.Value.RECOVERY:
return "RÉCUPÉRATION"
SonarScanState.Value.READY:
return "RELEVÉ DISPONIBLE"
return "CAPTURE"