extends Node3D
@export var main_scene: PackedScene

@onready var speed_label : Label = $HUD/speed_label
@onready var camera_label : Label = $HUD/camera_label
@onready var train: MeshInstance3D = $Ground/Train
@onready var camera: TrainControlCamera = $TrainCamera
@onready var rail_switch: Area3D = $Ground/RailSwtich
@onready var switch_label : Label = $HUD/switch_label


func _process(_delta: float) -> void:
	_update_ui()
	
	if Input.is_action_just_pressed("ui_cancel"):
		SceneSwitcher.switch_scene(main_scene.resource_path)

	if Input.is_action_just_pressed("change_train"):
		_toggle_rail()
	
	
func _update_ui() -> void:
	if speed_label and train:
		var kmh = train.get_speed() * 3.6
		speed_label.text = "Velocità: %.0f km/h" % kmh
			
	if camera_label and camera:
		camera_label.text = "Camera: %s" % camera.get_mode_name()


func _toggle_rail() -> void:
	if train and rail_switch:
		rail_switch.toggle_switch()
		train.switch_to_rail(rail_switch.switch_to_rail)


func _update_switch_status():
	if not switch_label:
		return
	
	#if rail_switch:
		#var state_name = rail_switch.get_state_name()
		#var color = Color.YELLOW if rail_switch.current_state == rail_switch.SwitchState.LEFT else Color.CYAN
		#switch_label.text = "Scambio: %s" % state_name
		#switch_label.add_theme_color_override("font_color", color)
	#else:
		#switch_label.text = "Scambio: N/A"
