2025-07-01 12:40:48 +00:00
|
|
|
extends RoomTemplate
|
|
|
|
|
|
2025-10-07 22:37:05 +00:00
|
|
|
@export var all_stations: Dictionary[Station.id, Station]
|
|
|
|
|
@export var all_lines: Dictionary[TrainLine.id, TrainLine]
|
2025-10-29 21:48:41 +00:00
|
|
|
|
|
|
|
|
func _ready() -> void:
|
|
|
|
|
%LeftDetection.body_entered.connect(on_left_train_enter)
|
|
|
|
|
%RightDetection.body_entered.connect(on_right_train_enter)
|
|
|
|
|
%LeftDetection.body_exited.connect(on_left_train_exit)
|
|
|
|
|
%RightDetection.body_exited.connect(on_right_train_exit)
|
|
|
|
|
|
|
|
|
|
func start_room():
|
|
|
|
|
State.pass_stage_to(%PlayerController)
|
|
|
|
|
on_first_station()
|
|
|
|
|
|
|
|
|
|
var left_first_station: bool = false
|
|
|
|
|
func on_first_station():
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_DND
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
%ShedulePlayer_R.play("train_arriving")
|
|
|
|
|
await get_tree().create_timer(12.0).timeout
|
|
|
|
|
if left_first_station: return
|
|
|
|
|
%ShedulePlayer_R.play("train_leaving")
|
|
|
|
|
await get_tree().create_timer(3.0).timeout
|
|
|
|
|
%RightLabel.text = "do not board"
|
|
|
|
|
await get_tree().create_timer(6.0).timeout
|
|
|
|
|
%ShedulePlayer_L.play("train_arriving")
|
|
|
|
|
|
|
|
|
|
var on_second_platform: bool = false
|
|
|
|
|
func on_first_transition(_is_left: bool = false):
|
|
|
|
|
%StationPlayer.play("first_transition")
|
|
|
|
|
await get_tree().create_timer(1.0).timeout
|
|
|
|
|
on_second_platform = true
|
|
|
|
|
|
|
|
|
|
func on_second_transition():
|
|
|
|
|
%StationPlayer.play("second_transition")
|
|
|
|
|
|
|
|
|
|
func on_third_transition():
|
|
|
|
|
%StationPlayer.play("third_transition")
|
|
|
|
|
|
|
|
|
|
func pull_save_state(save: SaveGame) -> void:
|
|
|
|
|
save.sequences_enabled = Scenes.enabled_sequences
|
|
|
|
|
|
|
|
|
|
func prepare_transition():
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
func unload():
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
func on_left_train_enter(_body):
|
|
|
|
|
if not left_first_station:
|
|
|
|
|
left_first_station = true
|
|
|
|
|
await get_tree().create_timer(2.0).timeout
|
|
|
|
|
%Train2.get_child(0).door_open = false
|
|
|
|
|
on_first_transition(true)
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULD_VOLUNTARY
|
|
|
|
|
%SubwayMap.current_station = Scenes.id.ADULD_VOLUNTARY
|
|
|
|
|
%RightLabel.text = "U3 Gesundquell \n via Rosenthal Hospital"
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULD_CHRISTMAS
|
|
|
|
|
%SubwayMap.current_station = Scenes.id.ADULD_CHRISTMAS
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
%Train2.get_child(0).door_open = true
|
|
|
|
|
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
if not changeover:
|
|
|
|
|
%Train2.get_child(0).door_open = false
|
|
|
|
|
on_second_transition()
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_UNI
|
|
|
|
|
%SubwayMap.current_station = Scenes.id.ADULT_UNI
|
|
|
|
|
%RightLabel.text = "do not board"
|
|
|
|
|
%LeftLabel.text = "do not board"
|
|
|
|
|
on_final = true
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
%Train2.get_child(0).door_open = true
|
|
|
|
|
else:
|
|
|
|
|
%ShedulePlayer_L.play("train_leaving")
|
|
|
|
|
%LeftLabel.text = "do not board"
|
|
|
|
|
return
|
|
|
|
|
if changeover:
|
|
|
|
|
%ShedulePlayer_R.play("train_leaving")
|
|
|
|
|
await get_tree().create_timer(2.0).timeout
|
|
|
|
|
%Train2.get_child(0).door_open = false
|
|
|
|
|
on_second_transition()
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_THERAPY
|
|
|
|
|
%SubwayMap.current_station = Scenes.id.ADULT_THERAPY
|
|
|
|
|
%RightLabel.text = "do not board"
|
|
|
|
|
%LeftLabel.text = "do not board"
|
|
|
|
|
on_final = true
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
%Train2.get_child(0).door_open = true
|
|
|
|
|
|
|
|
|
|
var on_final: bool = false
|
|
|
|
|
var on_direct_path: bool = false
|
|
|
|
|
func on_right_train_enter(_body):
|
|
|
|
|
if not left_first_station:
|
|
|
|
|
on_direct_path = true
|
|
|
|
|
%Train.get_child(0).door_open = false
|
|
|
|
|
await get_tree().create_timer(2.0).timeout
|
|
|
|
|
left_first_station = true
|
|
|
|
|
on_first_transition(false)
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_EATING
|
|
|
|
|
%SubwayMap.current_station = Scenes.id.ADULT_EATING
|
|
|
|
|
%LeftLabel.text = "U8 Gesundquell \n via Rosenthal Hospital"
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_UNI
|
|
|
|
|
%SubwayMap.current_station = Scenes.id.ADULT_UNI
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
%Train.get_child(0).door_open = true
|
|
|
|
|
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
|
|
|
|
|
if not changeover:
|
|
|
|
|
%Train.get_child(0).door_open = false
|
|
|
|
|
on_second_transition()
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_BURNOUT
|
|
|
|
|
%SubwayMap.current_station = Scenes.id.ADULT_BURNOUT
|
|
|
|
|
%RightLabel.text = "do not board"
|
|
|
|
|
%LeftLabel.text = "do not board"
|
|
|
|
|
on_final = true
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
%Train.get_child(0).door_open = true
|
|
|
|
|
else:
|
|
|
|
|
%ShedulePlayer_R.play("train_leaving")
|
|
|
|
|
%RightLabel.text = "do not board"
|
|
|
|
|
return
|
|
|
|
|
if changeover:
|
|
|
|
|
on_second_transition()
|
|
|
|
|
if on_direct_path: %ShedulePlayer_L.play("train_leaving")
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
Scenes.enabled_sequences += 1 << Scenes.id.ADULD_CHRISTMAS
|
|
|
|
|
%SubwayMap.current_station = Scenes.id.ADULD_CHRISTMAS
|
|
|
|
|
await get_tree().create_timer(2.0).timeout
|
|
|
|
|
%Train2.get_child(0).door_open = false
|
|
|
|
|
%RightLabel.text = "do not board"
|
|
|
|
|
%LeftLabel.text = "do not board"
|
|
|
|
|
on_final = true
|
|
|
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
|
%Train.get_child(0).door_open = true
|
|
|
|
|
|
|
|
|
|
var changeover: bool = false
|
|
|
|
|
func on_left_train_exit(_body):
|
|
|
|
|
if on_second_platform and not on_final:
|
|
|
|
|
changeover = true
|
|
|
|
|
%ShedulePlayer_R.play("train_arriving")
|
|
|
|
|
|
|
|
|
|
func on_right_train_exit(_body):
|
|
|
|
|
if on_second_platform and not on_final:
|
|
|
|
|
changeover = true
|
|
|
|
|
%ShedulePlayer_L.play("train_arriving")
|
|
|
|
|
await get_tree().create_timer(10).timeout
|
|
|
|
|
%RightLabel.text = "U1 weissnicht \n via Saint-Exupery Sq."
|
|
|
|
|
await get_tree().create_timer(5).timeout
|
|
|
|
|
%ShedulePlayer_R.play("train_arriving")
|