frame-of-mind/src/base-environments/transition/code/subway_sequence.gd

173 lines
5.9 KiB
GDScript

extends RoomTemplate
@export var all_stations: Dictionary[Station.id, Station]
@export var all_lines: Dictionary[TrainLine.id, TrainLine]
func _ready() -> void:
super._ready()
id = State.rooms.TRANSITION
func start_room():
super.start_room()
%station_ministry.leave_room.connect(func():
proceed.emit(Main.adulthood_room_path))
# Give player control immediately, then open
Scenes.player_enable.emit(true)
await Main.curtain.open()
func pull_save_state(save: SaveGame) -> void:
#FIXME
save.sequences_enabled = Scenes.enabled_sequences
save.current_room = State.rooms.ADULTHOOD
save_game = save
# Call parent to restore player position
super.pull_save_state(save)
## left here for reference... the ~35 lines of code above should be enoough
#var left_first_station: bool = false
#func on_first_station() -> void:
# return
# 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 on_left_train_enter(_body) -> void:
# 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.ADULT_VOLUNTARY
# %SubwayMap.current_station = Scenes.id.ADULT_VOLUNTARY
# %RightLabel.text = "U3 Gesundquell \n via Rosenthal Hospital"
# await get_tree().create_timer(5.0).timeout
# Scenes.enabled_sequences += 1 << Scenes.id.ADULT_AUTISM
# %SubwayMap.current_station = Scenes.id.ADULT_AUTISM
# 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_SELF_ADVOCACY
# %SubwayMap.current_station = Scenes.id.ADULT_SELF_ADVOCACY
# %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
# save_game.seen.append(str(Scenes.id.ADULT_THERAPY_UNI))
# %SubwayMap.current_station = Scenes.id.ADULT_THERAPY_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
#
#var on_final: bool = false:
# set(final):
# #FIXME: this needs to be a proper sequence!
# on_final = final
# await get_tree().create_timer(0.5).timeout
# if final: prepare_transition()
#var on_direct_path: bool = false
#func on_right_train_enter(_body) -> void:
# 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_SELF_ADVOCACY
# %SubwayMap.current_station = Scenes.id.ADULT_SELF_ADVOCACY
# 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.ADULT_AUTISM
# %SubwayMap.current_station = Scenes.id.ADULT_AUTISM
# 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")