extends Control @export var TitleScreen: PackedScene @export var ScreeningDesk: PackedScene @export var Bedroom: PackedScene @export var TextScreens: PackedScene @export var DialogueScreens: PackedScene var dialogue_intro = load("res://Dialogues/intro.dialogue") # Called when the node enters the scene tree for the first time. func _ready() -> void: #Adding Scenes var title_screen = TitleScreen.instantiate() var screening_desk = ScreeningDesk.instantiate() var bedroom = Bedroom.instantiate() var text_screens = TextScreens.instantiate() var dialogue_screens = DialogueScreens.instantiate() add_child(title_screen) add_child(screening_desk) add_child(bedroom) add_child(text_screens) add_child(dialogue_screens) #Naming Scenes title_screen.name = "TitleScreen" screening_desk.name = "ScreeningDesk" bedroom.name = "Bedroom" text_screens.name = "TextScreens" dialogue_screens.name = "DialogueScreens" #Showing TitleScreen title_screen.show() #UI.show() #UI.get_node("UI/SkipContainer").show() #Connecting Signals title_screen.connect("new_game_pressed", _on_new_game_pressed) pass # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass # Starts a new game func _on_new_game_pressed(): var choice_dialog = UI.get_node("UI/ConfirmationDialog") choice_dialog.set_ok_button_text("Yes") choice_dialog.set_cancel_button_text("No") choice_dialog.get_label().text = ("Do you wish to skip the introduction ?") UI.get_node("UI/ConfirmationDialog").show() choice_dialog.get_ok_button().pressed.connect(skip_intro, CONNECT_ONE_SHOT) choice_dialog.get_cancel_button().pressed.connect(play_intro, CONNECT_ONE_SHOT) #Skips the introduction func skip_intro(): transition("big", [$TitleScreen], [$ScreeningDesk, UI, UI.get_node("UI/UpperContainer")]) await TransitionScreen.transition_finished #Plays the entire introduction func play_intro(): var text_container = $TextScreens/MarginContainer/IntroBoxContainer/TextContainer #Introduction first slides transition("big", [$TitleScreen], [$TextScreens, text_container.get_child(0), UI, UI.get_node("UI/SkipContainer")]) await UI.next_slide for i in 4: transition("small", [text_container.get_child(i)], [text_container.get_child(i+1)]) await UI.next_slide #Dialogue in the Meeting Room transition("big", [$TextScreens, text_container.get_child(4), UI, UI.get_node("UI/SkipContainer")], [$DialogueScreens]) await TransitionScreen.transition_finished $DialogueScreens.dialogue(dialogue_intro, "start") await DialogueManager.dialogue_ended #Transition to the Screening Desk transition("big", [$DialogueScreens], [$ScreeningDesk]) await UI.next_slide # Takes care of fading transitions between scenes func transition(fading_screen_size, scenes_to_hide, scenes_to_show): TransitionScreen.transition(fading_screen_size) await TransitionScreen.fading_finished for scene in scenes_to_hide: scene.hide() for scene in scenes_to_show: scene.show()