Files
EGJ25/scenes/indoors/last.gd
minimata f6dae54fd0
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 12s
Create tag and build when new code gets to main / Export (push) Successful in 2m31s
fix: added voiceline and removed broken credits
2025-06-29 14:58:36 +02:00

128 lines
3.8 KiB
GDScript

extends Node2D
@export_file("*.tscn") var golé: String
@export_file("*.tscn") var next_level: String
@export var base_mode: GUIDEMappingContext
@export var vies = 3
@onready var lights: Node2D = $Lights
@onready var wrong_hack: Interactible = %WrongHack
@onready var right_hack: Interactible = %RightHack
@onready var wrong_door: Interactible = $GetOutDoors/WrongDoor
@onready var right_door: Interactible = $GetOutDoors/RightDoor
@onready var timer_between_vo: Timer = $TimerBetweenVO
var is_interjection_next = false
var current_info: int = 0
var is_over = false
var currently_playing: AudioStreamPlayer2D
@onready var vo_light_off: AudioStreamPlayer2D = $Hack/VOLightOff
@onready var vo_prise_tiree: AudioStreamPlayer2D = $Hack/VOPriseTiree
@onready var vo_interjection: AudioStreamPlayer2D = $Hack/VOInterjection
@onready var interact: AudioStreamPlayer2D = $Player/Interact
@onready var vo_trop_proche: AudioStreamPlayer2D = $Hack/VOTropProche
@onready var vo_player_1: AudioStreamPlayer2D = $Hack/VOPlayer1
@onready var vo_player_2: AudioStreamPlayer2D = $Hack/VOPlayer2
@onready var vo_player_3: AudioStreamPlayer2D = $Hack/VOPlayer3
@onready var vo_player_4: AudioStreamPlayer2D = $Hack/VOPlayer4
@onready var vo_player_5: AudioStreamPlayer2D = $Hack/VOPlayer5
@onready var vo_player_6: AudioStreamPlayer2D = $Hack/VOPlayer6
@onready var vo_player_7: AudioStreamPlayer2D = $Hack/VOPlayer7
@onready var vo_player_8: AudioStreamPlayer2D = $Hack/VOPlayer8
@onready var vo_player_9: AudioStreamPlayer2D = $Hack/VOPlayer9
@onready var vo_player_10: AudioStreamPlayer2D = $Hack/VOPlayer10
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)
wrong_hack.activate()
right_hack.deactivate()
wrong_door.activate()
right_door.deactivate()
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)
currently_playing = vo_players[current_info]
vo_players[current_info].play()
current_info += 1
func _on_prise_interacted(event_id: String) -> void:
wrong_hack.deactivate()
right_hack.activate()
for light in lights.get_children():
light.visible = false
if currently_playing != null and currently_playing.playing:
currently_playing.stop()
interact.play()
vo_light_off.play()
currently_playing = vo_light_off
func made_mistake() -> void:
vies -= 1
if vies == 0:
SceneLoader.load_scene(golé)
func _on_failed_hack(event_id: String) -> void:
if currently_playing != null and currently_playing.playing:
currently_playing.stop()
made_mistake()
interact.play()
vo_trop_proche.play()
currently_playing = vo_trop_proche
func _on_successful_hack(event_id: String) -> void:
if currently_playing != null and currently_playing.playing:
currently_playing.stop()
right_door.activate()
wrong_door.deactivate()
interact.play()
vo_prise_tiree.play()
currently_playing = vo_prise_tiree
right_door.visible = true
func _on_interactible_triggered(event_id: String) -> void:
made_mistake()
interact.play()
func _on_wrong_door_event_triggered(event_id: String) -> void:
SceneLoader.load_scene(golé)
func _on_right_door_event_triggered(event_id: String) -> void:
SceneLoader.load_scene(next_level) # Replace with function body.
func _on_timer_between_vo_timeout() -> void:
if currently_playing != null and currently_playing.playing:
return
if is_over:
vo_interjection.play()
if current_info >= len(vo_players):
is_over = true
return
currently_playing = vo_players[current_info]
vo_players[current_info].play()
current_info += 1
func _on_vo_trop_proche_finished() -> void:
pass