extends Node2D

@export_file("*.tscn") var wrong_building: String
@export_file("*.tscn") var next_level: String

@export var base_mode: GUIDEMappingContext

@onready var interact: AudioStreamPlayer2D = $Player/Interact

var is_interjection_next = false
var current_info = 0
var is_over = false
@onready var vo_interjection: AudioStreamPlayer2D = $RightDoor/VOInterjection

@onready var vo_player_1: AudioStreamPlayer2D = $RightDoor/VOPlayer1
@onready var vo_player_2: AudioStreamPlayer2D = $RightDoor/VOPlayer2
@onready var vo_player_3: AudioStreamPlayer2D = $RightDoor/VOPlayer3
@onready var vo_player_4: AudioStreamPlayer2D = $RightDoor/VOPlayer4
@onready var vo_player_5: AudioStreamPlayer2D = $RightDoor/VOPlayer5
@onready var vo_player_6: AudioStreamPlayer2D = $RightDoor/VOPlayer6
@onready var vo_player_7: AudioStreamPlayer2D = $RightDoor/VOPlayer7
@onready var vo_player_8: AudioStreamPlayer2D = $RightDoor/VOPlayer8
@onready var vo_player_9: AudioStreamPlayer2D = $RightDoor/VOPlayer9
@onready var vo_player_10: AudioStreamPlayer2D = $RightDoor/VOPlayer10
@onready var vo_player_11: AudioStreamPlayer2D = $RightDoor/VOPlayer11
@onready var vo_player_12: AudioStreamPlayer2D = $RightDoor/VOPlayer12
@onready var vo_player_13: AudioStreamPlayer2D = $RightDoor/VOPlayer13
var vo_players: Array[AudioStreamPlayer2D] = []

# Called when the node enters the scene tree for the first time.
func _ready() -> void:
	GUIDE.enable_mapping_context(base_mode)
	
	vo_players.append(vo_player_1)
	vo_players.append(vo_player_2)
	vo_players.append(vo_player_3)
	vo_players.append(vo_player_4)
	vo_players.append(vo_player_5)
	vo_players.append(vo_player_6)
	vo_players.append(vo_player_7)
	vo_players.append(vo_player_8)
	vo_players.append(vo_player_9)
	vo_players.append(vo_player_10)
	vo_players.append(vo_player_11)
	vo_players.append(vo_player_12)
	vo_players.append(vo_player_13)


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
	pass
	
	
func _on_door_event_triggered(event_id: String) -> void:
	interact.play()


func _on_door_event_confirmed(event_id: String) -> void:
	if event_id == "right":
		SceneLoader.load_scene(next_level)
		return
		 
	SceneLoader.load_scene(wrong_building)


func _on_timer_between_vo_timeout() -> void:
	if is_over:
		vo_interjection.play()
	
	if current_info >= len(vo_players):
		is_over = true
		return
		
	vo_players[current_info].play()
	current_info += 1
