Add production bathymetric sonar slice
This commit is contained in:
1 parent
a18e82eb44
commit
7613daee84
28 files changed
+1825
-87
No files matched your search
@@ -0,0 +1,68 @@
|
||||
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"
|
||||
Reference in new issue
Block a user