chore: main scene is now a control.§

This commit is contained in:
tiger tiger tiger 2025-12-10 18:52:09 +01:00
parent 515462b631
commit 6982d32169
7 changed files with 388 additions and 362 deletions

View File

@ -2039,6 +2039,8 @@ volume_db = -80.0
bus = &"music" bus = &"music"
[node name="childhood" parent="logic/ScenePlayer" instance=ExtResource("12_viwxf")] [node name="childhood" parent="logic/ScenePlayer" instance=ExtResource("12_viwxf")]
story_array = []
paragraph_lengths = [1]
[node name="VoiceTraining" type="AudioStreamPlayer" parent="logic/ScenePlayer"] [node name="VoiceTraining" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
stream = ExtResource("10_wwwdq") stream = ExtResource("10_wwwdq")
@ -2048,11 +2050,15 @@ bus = &"music"
[node name="JuiJutsu" parent="logic/ScenePlayer" instance=ExtResource("12_x3dlb")] [node name="JuiJutsu" parent="logic/ScenePlayer" instance=ExtResource("12_x3dlb")]
[node name="voice_training" parent="logic/ScenePlayer" instance=ExtResource("13_v3447")] [node name="voice_training" parent="logic/ScenePlayer" instance=ExtResource("13_v3447")]
story_array = []
paragraph_lengths = [1]
[node name="Jui_Jutsu" type="AudioStreamPlayer" parent="logic/ScenePlayer"] [node name="Jui_Jutsu" type="AudioStreamPlayer" parent="logic/ScenePlayer"]
bus = &"music" bus = &"music"
[node name="draven" parent="logic/ScenePlayer" instance=ExtResource("19_d3c7p")] [node name="draven" parent="logic/ScenePlayer" instance=ExtResource("19_d3c7p")]
story_array = []
paragraph_lengths = [1]
[node name="starlight_mesh" type="MeshInstance3D" parent="logic/ScenePlayer"] [node name="starlight_mesh" type="MeshInstance3D" parent="logic/ScenePlayer"]
transform = Transform3D(0.999, 0, 0, 0, 0.999, 0, 0, 0, 0.999, 0, 0, 0) transform = Transform3D(0.999, 0, 0, 0, 0.999, 0, 0, 0, 0.999, 0, 0, 0)

View File

@ -23,7 +23,7 @@ var focus_stickies:bool = true:
else: else:
current_dropzone_id = current_dropzone_id current_dropzone_id = current_dropzone_id
var has_stage = false: var has_stage := false:
set(focus): set(focus):
if focus: if focus:
has_stage = true has_stage = true

View File

@ -1 +1,6 @@
extends Node extends Node
# General housekeeping to set up a "normal"
# game experience, e.g.
# - ensure settings exist
# - ensure savegames are healthy

View File

@ -1,184 +1,184 @@
extends Node3D extends Control
signal room_loaded signal room_loaded
var has_stage: bool = false: var has_stage: bool = false
set(stage): # set(stage):
has_stage = stage # has_stage = stage
if in_game and has_stage: # if in_game and has_stage:
in_game = false # in_game = false
_return_to_menu() # _return_to_menu()
@export_file(".tscn") var youth_room_path: String @export_file(".tscn") var youth_room_path: String
@export_file(".tscn") var transition_room_path: String @export_file(".tscn") var transition_room_path: String
@export_file(".tscn") var adulthood_room_path: String @export_file(".tscn") var adulthood_room_path: String
@export_file(".tscn") var ending_path: String @export_file(".tscn") var ending_path: String
@onready var main_menu:MainMenu = %"Main Menu" @onready var main_menu:MainMenu = %MainMenu
@onready var pause_menu = %PauseMenu @onready var pause_menu = %PauseMenu
@onready var menu_animation: AnimationTree = %MenuAnimationTree @onready var menu_animation: AnimationTree = %MenuAnimationTree
@onready var state_machine = menu_animation["parameters/playback"] @onready var state_machine = menu_animation["parameters/playback"]
@onready var focus_forward = %"Main Menu" @onready var focus_forward = %MainMenu
var current_room_id: State.rooms
var in_game = false
var current_room: RoomTemplate
var currently_loading_room: String = "":
set(path):
if path != "":
ResourceLoader.load_threaded_request(path, "PackedScene")
menu_animation["parameters/conditions/loading_done"] = false
menu_animation["parameters/conditions/load_save"] = true
else:
menu_animation["parameters/conditions/loading_done"] = true
menu_animation["parameters/conditions/load_save"] = false
currently_loading_room = path
# Called when the node enters the scene tree for the first time.
func _ready():
main_menu.start_game.connect(load_save)
main_menu.roll_credits.connect(func(): state_machine.travel("credits_roll"))
get_tree().tree_process_mode_changed.connect(pause_mode_changed)
await get_tree().process_frame
currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
State.pass_stage_to(main_menu)
Scenes.scene_starting.connect(prepare_transition)
Scenes.scene_finished.connect(transition)
func _process(_delta: float) -> void:
if currently_loading_room != "" and not await_swap:
if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3:
if not current_room == null:
current_room.queue_free()
State.onready_room = get_room_id_from_path(currently_loading_room)
current_room = ResourceLoader.load_threaded_get(currently_loading_room).instantiate()
print("add room")
add_child(current_room)
State.onready_room = State.rooms.NULL
move_child(current_room, 0)
currently_loading_room = ""
room_loaded.emit()
if Input.is_action_just_pressed("reset_demo") and (OS.has_feature("demo") or true):
State.stage_list = [self]
_return_to_menu()
func _unhandled_input(event: InputEvent) -> void:
if event is InputEvent and in_game:
if event.is_action_pressed("ui_menu"):
toggle_pause_menu()
#
#var in_game = false
#
#var current_room: RoomTemplate
#var currently_loading_room: String = "":
# set(path):
# if path != "":
# ResourceLoader.load_threaded_request(path, "PackedScene")
# menu_animation["parameters/conditions/loading_done"] = false
# menu_animation["parameters/conditions/load_save"] = true
# else:
# menu_animation["parameters/conditions/loading_done"] = true
# menu_animation["parameters/conditions/load_save"] = false
#
# currently_loading_room = path
#
## Called when the node enters the scene tree for the first time.
#func _ready():
# main_menu.start_game.connect(load_save)
# main_menu.roll_credits.connect(func(): state_machine.travel("credits_roll"))
# get_tree().tree_process_mode_changed.connect(pause_mode_changed)
# await get_tree().process_frame
# currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
# State.pass_stage_to(main_menu)
#
# Scenes.scene_starting.connect(prepare_transition)
# Scenes.scene_finished.connect(transition)
#
#func _process(_delta: float) -> void:
# if currently_loading_room != "" and not await_swap:
# if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3:
# if not current_room == null:
# current_room.queue_free()
# State.onready_room = get_room_id_from_path(currently_loading_room)
# current_room = ResourceLoader.load_threaded_get(currently_loading_room).instantiate()
# print("add room")
# add_child(current_room)
# State.onready_room = State.rooms.NULL
# move_child(current_room, 0)
# currently_loading_room = ""
# room_loaded.emit()
#
# if Input.is_action_just_pressed("reset_demo") and (OS.has_feature("demo") or true):
# State.stage_list = [self]
# _return_to_menu()
#
#func _unhandled_input(event: InputEvent) -> void:
# if event is InputEvent and in_game:
# if event.is_action_pressed("ui_menu"):
# toggle_pause_menu()
#
func toggle_pause_menu(): func toggle_pause_menu():
if not get_tree().paused: pass
get_tree().paused = true # if not get_tree().paused:
var state_machine = menu_animation["parameters/playback"] # get_tree().paused = true
state_machine.travel("reveal_pause_menu") # var state_machine := menu_animation["parameters/playback"]
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE # state_machine.travel("reveal_pause_menu")
else: # Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
get_tree().paused = false # else:
var state_machine = menu_animation["parameters/playback"] # get_tree().paused = false
state_machine.travel("start_game") # var state_machine := menu_animation["parameters/playback"]
# state_machine.travel("start_game")
#
# if State.stage_list[0] is Player:
# Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
if State.stage_list[0] is Player: #func debug_youth():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED # get_child(1).hide()
# get_child(2).hide()
func debug_youth(): # get_child(3).hide()
get_child(1).hide() # get_child(0).get_ready()
get_child(2).hide() # get_child(0).start()
get_child(3).hide() #
get_child(0).get_ready() #func _return_to_menu():
get_child(0).start() # State.active_save_game = null
#
func _return_to_menu(): # menu_animation["parameters/conditions/start_game"] = false
State.active_save_game = null #
# State.pass_stage_to(main_menu)
menu_animation["parameters/conditions/start_game"] = false #
# currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
State.pass_stage_to(main_menu) #
# menu_animation["parameters/conditions/return_to_menu"] = true
currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room) # await(get_tree().create_timer(0.5).timeout)
# menu_animation["parameters/conditions/return_to_menu"] = false
menu_animation["parameters/conditions/return_to_menu"] = true # _on_ready_to_unload()
await(get_tree().create_timer(0.5).timeout) #
menu_animation["parameters/conditions/return_to_menu"] = false #func load_save(save: SaveGame):
_on_ready_to_unload() #
# if currently_loading_room != "":
func load_save(save: SaveGame): # await(room_loaded)
#
if currently_loading_room != "": # if save.current_room != current_room.id:
await(room_loaded) # # TODO Prevent race condition from appearing when save is loaded while room is still loading.
# currently_loading_room = get_room_path_from_id(save.current_room)
if save.current_room != current_room.id: # await(room_loaded)
# TODO Prevent race condition from appearing when save is loaded while room is still loading. #
currently_loading_room = get_room_path_from_id(save.current_room) # menu_animation["parameters/conditions/start_game"] = true
await(room_loaded) #
# State.active_save_game = save
menu_animation["parameters/conditions/start_game"] = true # in_game = true
# current_room.start_room()
State.active_save_game = save #
in_game = true #func _on_ready_to_unload():
current_room.start_room() # if get_child(0) is Node3D:
# get_child(0).free()
func _on_ready_to_unload(): #
if get_child(0) is Node3D: #func get_room_path_from_id(id: State.rooms) -> String:
get_child(0).free() # match id:
# State.rooms.YOUTH, State.rooms.NULL:
func get_room_path_from_id(id: State.rooms) -> String: # return youth_room_path
match id: # State.rooms.TRANSITION:
State.rooms.YOUTH, State.rooms.NULL: # return transition_room_path
return youth_room_path # State.rooms.ADULTHOOD:
State.rooms.TRANSITION: # return adulthood_room_path
return transition_room_path # _:
State.rooms.ADULTHOOD: # return ending_path
return adulthood_room_path #
_: #func get_room_id_from_path(path: String) -> State.rooms:
return ending_path # match path:
# youth_room_path:
func get_room_id_from_path(path: String) -> State.rooms: # return State.rooms.YOUTH
match path: # transition_room_path:
youth_room_path: # return State.rooms.TRANSITION
return State.rooms.YOUTH # adulthood_room_path:
transition_room_path: # return State.rooms.ADULTHOOD
return State.rooms.TRANSITION # _:
adulthood_room_path: # return State.rooms.NULL
return State.rooms.ADULTHOOD #
_: #
return State.rooms.NULL #func start_demo():
# #FIXME this causes the room to reload
# #load_save(SaveGame.new())
func start_demo(): # current_room.start_room()
#FIXME this causes the room to reload # in_game = true
#load_save(SaveGame.new()) #
current_room.start_room() #func pause_mode_changed():
in_game = true # print(get_tree().paused)
#
func pause_mode_changed(): #var await_swap: bool = false
print(get_tree().paused) #func prepare_transition(scene_id: Scenes.id, _repeat):
# if scene_id == Scenes.id.TRANSITION:
var await_swap: bool = false # await_swap = true
func prepare_transition(scene_id: Scenes.id, _repeat): # #FIXME: this does not need to be part of the sequence
if scene_id == Scenes.id.TRANSITION: # await(get_tree().process_frame)
await_swap = true # current_room.prepare_transition()
#FIXME: this does not need to be part of the sequence # if not _repeat:
await(get_tree().process_frame) # currently_loading_room = get_room_path_from_id(State.rooms.TRANSITION)
current_room.prepare_transition() # else:
if not _repeat: #
currently_loading_room = get_room_path_from_id(State.rooms.TRANSITION) # currently_loading_room = get_room_path_from_id(State.rooms.ADULTHOOD)
else: #
#func transition(scene_id: Scenes.id, _repeat):
currently_loading_room = get_room_path_from_id(State.rooms.ADULTHOOD) # if scene_id == Scenes.id.TRANSITION:
# State.reset_focus()
func transition(scene_id: Scenes.id, _repeat): # await_swap = false
if scene_id == Scenes.id.TRANSITION: # await room_loaded
State.reset_focus() # if not _repeat:
await_swap = false # State.queue_for_stage(current_room)
await room_loaded # Scenes.end_current_sequence()
if not _repeat: # else:
State.queue_for_stage(current_room) # State.pass_stage_to(current_room)
Scenes.end_current_sequence()
else:
State.pass_stage_to(current_room)

View File

@ -20,6 +20,30 @@
[ext_resource type="Script" uid="uid://dfr1w7u3jgni3" path="res://addons/markdownlabel/header_formats/h5_format.gd" id="18_d13ii"] [ext_resource type="Script" uid="uid://dfr1w7u3jgni3" path="res://addons/markdownlabel/header_formats/h5_format.gd" id="18_d13ii"]
[ext_resource type="Script" uid="uid://bsi6dexoofpe6" path="res://addons/markdownlabel/header_formats/h6_format.gd" id="19_1u8w0"] [ext_resource type="Script" uid="uid://bsi6dexoofpe6" path="res://addons/markdownlabel/header_formats/h6_format.gd" id="19_1u8w0"]
[sub_resource type="Resource" id="Resource_0odxb"]
resource_local_to_scene = true
script = ExtResource("14_cegan")
[sub_resource type="Resource" id="Resource_lswn8"]
resource_local_to_scene = true
script = ExtResource("15_82xsv")
[sub_resource type="Resource" id="Resource_a6jrf"]
resource_local_to_scene = true
script = ExtResource("16_getpj")
[sub_resource type="Resource" id="Resource_xuqvo"]
resource_local_to_scene = true
script = ExtResource("17_ryguw")
[sub_resource type="Resource" id="Resource_qsp4k"]
resource_local_to_scene = true
script = ExtResource("18_d13ii")
[sub_resource type="Resource" id="Resource_kq58d"]
resource_local_to_scene = true
script = ExtResource("19_1u8w0")
[sub_resource type="GDScript" id="GDScript_8sq0u"] [sub_resource type="GDScript" id="GDScript_8sq0u"]
script/source = "extends Label script/source = "extends Label
@ -119,7 +143,7 @@ tracks/4/keys = {
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("../../Main Menu:modulate") tracks/5/path = NodePath("../../MainMenu:modulate")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
@ -131,7 +155,7 @@ tracks/5/keys = {
tracks/6/type = "value" tracks/6/type = "value"
tracks/6/imported = false tracks/6/imported = false
tracks/6/enabled = true tracks/6/enabled = true
tracks/6/path = NodePath("../../Main Menu:visible") tracks/6/path = NodePath("../../MainMenu:visible")
tracks/6/interp = 1 tracks/6/interp = 1
tracks/6/loop_wrap = true tracks/6/loop_wrap = true
tracks/6/keys = { tracks/6/keys = {
@ -203,7 +227,7 @@ tracks/11/keys = {
tracks/12/type = "value" tracks/12/type = "value"
tracks/12/imported = false tracks/12/imported = false
tracks/12/enabled = true tracks/12/enabled = true
tracks/12/path = NodePath("%Main Menu:visible") tracks/12/path = NodePath("../../MainMenu:visible")
tracks/12/interp = 1 tracks/12/interp = 1
tracks/12/loop_wrap = true tracks/12/loop_wrap = true
tracks/12/keys = { tracks/12/keys = {
@ -215,7 +239,7 @@ tracks/12/keys = {
tracks/13/type = "value" tracks/13/type = "value"
tracks/13/imported = false tracks/13/imported = false
tracks/13/enabled = true tracks/13/enabled = true
tracks/13/path = NodePath("%Main Menu:modulate") tracks/13/path = NodePath("../../MainMenu:modulate")
tracks/13/interp = 1 tracks/13/interp = 1
tracks/13/loop_wrap = true tracks/13/loop_wrap = true
tracks/13/keys = { tracks/13/keys = {
@ -303,7 +327,7 @@ length = 130.003
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath("../../Main Menu:visible") tracks/0/path = NodePath("../../MainMenu:visible")
tracks/0/interp = 0 tracks/0/interp = 0
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
@ -390,7 +414,7 @@ tracks/6/keys = {
tracks/7/type = "value" tracks/7/type = "value"
tracks/7/imported = false tracks/7/imported = false
tracks/7/enabled = true tracks/7/enabled = true
tracks/7/path = NodePath("%Main Menu:modulate") tracks/7/path = NodePath("../../MainMenu:modulate")
tracks/7/interp = 1 tracks/7/interp = 1
tracks/7/loop_wrap = true tracks/7/loop_wrap = true
tracks/7/keys = { tracks/7/keys = {
@ -454,7 +478,7 @@ tracks/3/keys = {
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("%Main Menu:visible") tracks/4/path = NodePath("../../MainMenu:visible")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
@ -494,7 +518,7 @@ tracks/1/keys = {
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("%Main Menu:visible") tracks/2/path = NodePath("../../MainMenu:visible")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
@ -506,7 +530,7 @@ tracks/2/keys = {
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("%Main Menu:modulate") tracks/3/path = NodePath("../../MainMenu:modulate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
@ -683,7 +707,7 @@ tracks/4/keys = {
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/imported = false tracks/5/imported = false
tracks/5/enabled = true tracks/5/enabled = true
tracks/5/path = NodePath("../../Main Menu:modulate") tracks/5/path = NodePath("../../MainMenu:modulate")
tracks/5/interp = 1 tracks/5/interp = 1
tracks/5/loop_wrap = true tracks/5/loop_wrap = true
tracks/5/keys = { tracks/5/keys = {
@ -907,7 +931,7 @@ tracks/3/keys = {
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/path = NodePath("%Main Menu:visible") tracks/4/path = NodePath("../../MainMenu:visible")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
@ -935,7 +959,7 @@ tracks/0/keys = {
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
tracks/1/enabled = true tracks/1/enabled = true
tracks/1/path = NodePath("%Main Menu:modulate") tracks/1/path = NodePath("../../MainMenu:modulate")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
@ -947,7 +971,7 @@ tracks/1/keys = {
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("%Main Menu:visible") tracks/2/path = NodePath("../../MainMenu:visible")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
@ -974,7 +998,7 @@ tracks/0/keys = {
tracks/1/type = "value" tracks/1/type = "value"
tracks/1/imported = false tracks/1/imported = false
tracks/1/enabled = true tracks/1/enabled = true
tracks/1/path = NodePath("../../Main Menu:modulate") tracks/1/path = NodePath("../../MainMenu:modulate")
tracks/1/interp = 1 tracks/1/interp = 1
tracks/1/loop_wrap = true tracks/1/loop_wrap = true
tracks/1/keys = { tracks/1/keys = {
@ -986,7 +1010,7 @@ tracks/1/keys = {
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("../../Main Menu:visible") tracks/2/path = NodePath("../../MainMenu:visible")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
@ -1145,7 +1169,7 @@ states/reveal_pause_menu/position = Vector2(783.91, -112.734)
states/start_game/node = SubResource("AnimationNodeAnimation_5umfs") states/start_game/node = SubResource("AnimationNodeAnimation_5umfs")
states/start_game/position = Vector2(698, 32) states/start_game/position = Vector2(698, 32)
transitions = ["Start", "init", SubResource("AnimationNodeStateMachineTransition_dxdg4"), "init", "loading", SubResource("AnimationNodeStateMachineTransition_0hpxy"), "loading", "loading_done", SubResource("AnimationNodeStateMachineTransition_ipapo"), "loading_done", "start_game", SubResource("AnimationNodeStateMachineTransition_0t1lp"), "start_game", "init", SubResource("AnimationNodeStateMachineTransition_66nmg"), "loading_done", "load_savegame", SubResource("AnimationNodeStateMachineTransition_6b86u"), "load_savegame", "loading_game", SubResource("AnimationNodeStateMachineTransition_y626i"), "loading_game", "start_game", SubResource("AnimationNodeStateMachineTransition_52bss"), "start_game", "credits_roll", SubResource("AnimationNodeStateMachineTransition_x8oth"), "credits_roll", "loading_done", SubResource("AnimationNodeStateMachineTransition_5ge3a"), "loading_done", "credits_roll", SubResource("AnimationNodeStateMachineTransition_44pd3"), "start_game", "reveal_pause_menu", SubResource("AnimationNodeStateMachineTransition_pc6pe"), "reveal_pause_menu", "hide_pause_menu", SubResource("AnimationNodeStateMachineTransition_dx61n"), "hide_pause_menu", "start_game", SubResource("AnimationNodeStateMachineTransition_lp1dx"), "hide_pause_menu", "init", SubResource("AnimationNodeStateMachineTransition_mqlnh")] transitions = ["Start", "init", SubResource("AnimationNodeStateMachineTransition_dxdg4"), "init", "loading", SubResource("AnimationNodeStateMachineTransition_0hpxy"), "loading", "loading_done", SubResource("AnimationNodeStateMachineTransition_ipapo"), "loading_done", "start_game", SubResource("AnimationNodeStateMachineTransition_0t1lp"), "start_game", "init", SubResource("AnimationNodeStateMachineTransition_66nmg"), "loading_done", "load_savegame", SubResource("AnimationNodeStateMachineTransition_6b86u"), "load_savegame", "loading_game", SubResource("AnimationNodeStateMachineTransition_y626i"), "loading_game", "start_game", SubResource("AnimationNodeStateMachineTransition_52bss"), "start_game", "credits_roll", SubResource("AnimationNodeStateMachineTransition_x8oth"), "credits_roll", "loading_done", SubResource("AnimationNodeStateMachineTransition_5ge3a"), "loading_done", "credits_roll", SubResource("AnimationNodeStateMachineTransition_44pd3"), "start_game", "reveal_pause_menu", SubResource("AnimationNodeStateMachineTransition_pc6pe"), "reveal_pause_menu", "hide_pause_menu", SubResource("AnimationNodeStateMachineTransition_dx61n"), "hide_pause_menu", "start_game", SubResource("AnimationNodeStateMachineTransition_lp1dx"), "hide_pause_menu", "init", SubResource("AnimationNodeStateMachineTransition_mqlnh")]
graph_offset = Vector2(-306.25, -187.73401) graph_offset = Vector2(144.75, -210.73401)
[sub_resource type="Shader" id="Shader_cegan"] [sub_resource type="Shader" id="Shader_cegan"]
code = "shader_type canvas_item; code = "shader_type canvas_item;
@ -1211,32 +1235,14 @@ fill = 1
fill_from = Vector2(0.538462, 0.491453) fill_from = Vector2(0.538462, 0.491453)
fill_to = Vector2(1.3, -0.3) fill_to = Vector2(1.3, -0.3)
[sub_resource type="Resource" id="Resource_0odxb"] [node name="main" type="Control"]
resource_local_to_scene = true
script = ExtResource("14_cegan")
[sub_resource type="Resource" id="Resource_lswn8"]
resource_local_to_scene = true
script = ExtResource("15_82xsv")
[sub_resource type="Resource" id="Resource_a6jrf"]
resource_local_to_scene = true
script = ExtResource("16_getpj")
[sub_resource type="Resource" id="Resource_xuqvo"]
resource_local_to_scene = true
script = ExtResource("17_ryguw")
[sub_resource type="Resource" id="Resource_qsp4k"]
resource_local_to_scene = true
script = ExtResource("18_d13ii")
[sub_resource type="Resource" id="Resource_kq58d"]
resource_local_to_scene = true
script = ExtResource("19_1u8w0")
[node name="main" type="Node3D"]
process_mode = 3 process_mode = 3
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_rqkns") script = ExtResource("1_rqkns")
youth_room_path = "res://base-environments/youth_room/youth_room.tscn" youth_room_path = "res://base-environments/youth_room/youth_room.tscn"
transition_room_path = "uid://fgp3s28h7msy" transition_room_path = "uid://fgp3s28h7msy"
@ -1245,6 +1251,7 @@ adulthood_room_path = "uid://flisupth27th"
[node name="Panel" type="Panel" parent="."] [node name="Panel" type="Panel" parent="."]
visible = false visible = false
modulate = Color(0, 0, 0, 1) modulate = Color(0, 0, 0, 1)
layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
@ -1252,158 +1259,17 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
mouse_filter = 2 mouse_filter = 2
[node name="Main Menu" parent="." instance=ExtResource("3_ik73t")]
unique_name_in_owner = true
[node name="FPSLabel" type="Label" parent="."]
visible = false
offset_right = 40.0
offset_bottom = 35.0
script = SubResource("GDScript_8sq0u")
[node name="Startup Menu" parent="." instance=ExtResource("1_v5rpm")]
visible = false
[node name="Disclaimer" parent="." instance=ExtResource("7_t45fc")]
visible = false
[node name="Control" type="Control" parent="."]
layout_mode = 3
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -40.0
offset_right = 40.0
grow_vertical = 0
[node name="mask" type="Sprite2D" parent="Control"]
modulate = Color(1, 1, 1, 0)
clip_children = 1
position = Vector2(98, -47)
rotation = 1.5708
texture = ExtResource("5_sr555")
[node name="frame" type="Sprite2D" parent="Control/mask"]
clip_children = 1
texture = ExtResource("6_aaaxa")
[node name="deco" type="Sprite2D" parent="Control/mask/frame"]
modulate = Color(1, 1, 1, 0)
rotation = -0.314159
texture = ExtResource("7_koraw")
[node name="LoadingLabel" type="Label" parent="Control"]
visible = false
layout_mode = 0
offset_left = 100.0
offset_top = -37.0
offset_right = 239.99973
offset_bottom = 9.0
text = "loading"
script = SubResource("GDScript_cegan")
[node name="MenuAnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
root_node = NodePath("../Control/mask")
libraries = {
&"": SubResource("AnimationLibrary_ogbs1")
}
autoplay = "init"
[node name="MenuAnimationTree" type="AnimationTree" parent="MenuAnimationPlayer"]
unique_name_in_owner = true
root_node = NodePath("%MenuAnimationPlayer/../Control/mask")
tree_root = SubResource("AnimationNodeStateMachine_uwcb5")
anim_player = NodePath("..")
parameters/conditions/load_save = false
parameters/conditions/loading_done = false
parameters/conditions/return_to_menu = false
parameters/conditions/roll_credits = false
parameters/conditions/start_game = false
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="MenuAnimationPlayer/MenuAnimationTree"]
bus = &"music"
[node name="PauseContainer" type="CenterContainer" parent="."]
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="PauseContainer"]
material = SubResource("ShaderMaterial_knlqd")
layout_mode = 2
texture = SubResource("GradientTexture2D_swtmc")
[node name="PauseMenu" type="PanelContainer" parent="PauseContainer"]
unique_name_in_owner = true
layout_mode = 2
script = ExtResource("9_ihfph")
[node name="VBoxContainer" type="VBoxContainer" parent="PauseContainer/PauseMenu"]
modulate = Color(1, 1, 1, 0)
layout_mode = 2
[node name="Label" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "Game Paused"
[node name="ResumeButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Resume"
[node name="BugButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
script = ExtResource("12_cegan")
metadata/_custom_type_script = "uid://sa15wakvpj2e"
[node name="ToMenuButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Return to Menu"
[node name="ToSettingsButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Open Settings"
[node name="ToDesktopButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Quit to Desktop"
[node name="HSeparator" type="HSeparator" parent="PauseContainer/PauseMenu/VBoxContainer"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="FindHelplineButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Find Help-Lines"
[node name="Label2" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
text = "opens findahelpline.com"
horizontal_alignment = 1
[node name="SkipStoryButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Skip this Story"
[node name="CreditsRoll" type="RichTextLabel" parent="."] [node name="CreditsRoll" type="RichTextLabel" parent="."]
visible = false visible = false
modulate = Color(1, 1, 1, 0) modulate = Color(1, 1, 1, 0)
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 220.0 offset_top = 220.0
offset_right = 1926.0 offset_bottom = 3502.0
offset_bottom = 5260.0 grow_horizontal = 2
grow_vertical = 2
bbcode_enabled = true bbcode_enabled = true
text = "[center] text = "[center]
[img=512]res://ui/menu_main/logo.png[/img] [img=512]res://ui/menu_main/logo.png[/img]
@ -1645,4 +1511,153 @@ h4 = SubResource("Resource_xuqvo")
h5 = SubResource("Resource_qsp4k") h5 = SubResource("Resource_qsp4k")
h6 = SubResource("Resource_kq58d") h6 = SubResource("Resource_kq58d")
[node name="MainMenu" parent="." instance=ExtResource("3_ik73t")]
unique_name_in_owner = true
layout_mode = 1
[node name="FPSLabel" type="Label" parent="."]
visible = false
layout_mode = 0
offset_right = 40.0
offset_bottom = 35.0
script = SubResource("GDScript_8sq0u")
[node name="Startup Menu" parent="." instance=ExtResource("1_v5rpm")]
visible = false
layout_mode = 1
[node name="Disclaimer" parent="." instance=ExtResource("7_t45fc")]
visible = false
layout_mode = 1
[node name="Loading" type="Control" parent="."]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
grow_vertical = 0
[node name="mask" type="Sprite2D" parent="Loading"]
modulate = Color(1, 1, 1, 0)
clip_children = 1
position = Vector2(98, -47)
rotation = 1.5708
texture = ExtResource("5_sr555")
[node name="frame" type="Sprite2D" parent="Loading/mask"]
clip_children = 1
texture = ExtResource("6_aaaxa")
[node name="deco" type="Sprite2D" parent="Loading/mask/frame"]
modulate = Color(1, 1, 1, 0)
rotation = -0.314159
texture = ExtResource("7_koraw")
[node name="LoadingLabel" type="Label" parent="Loading"]
visible = false
layout_mode = 0
offset_left = 100.0
offset_top = -37.0
offset_right = 239.99976
offset_bottom = 9.0
text = "loading"
script = SubResource("GDScript_cegan")
[node name="MenuAnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
root_node = NodePath("../Loading/mask")
libraries = {
&"": SubResource("AnimationLibrary_ogbs1")
}
autoplay = "init"
[node name="MenuAnimationTree" type="AnimationTree" parent="MenuAnimationPlayer"]
unique_name_in_owner = true
root_node = NodePath("%MenuAnimationPlayer/../Loading/mask")
tree_root = SubResource("AnimationNodeStateMachine_uwcb5")
anim_player = NodePath("..")
parameters/conditions/load_save = false
parameters/conditions/loading_done = false
parameters/conditions/return_to_menu = false
parameters/conditions/roll_credits = false
parameters/conditions/start_game = false
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="MenuAnimationPlayer/MenuAnimationTree"]
bus = &"music"
[node name="PauseContainer" type="CenterContainer" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureRect" type="TextureRect" parent="PauseContainer"]
material = SubResource("ShaderMaterial_knlqd")
layout_mode = 2
texture = SubResource("GradientTexture2D_swtmc")
[node name="PauseMenu" type="PanelContainer" parent="PauseContainer"]
unique_name_in_owner = true
layout_mode = 2
script = ExtResource("9_ihfph")
[node name="VBoxContainer" type="VBoxContainer" parent="PauseContainer/PauseMenu"]
modulate = Color(1, 1, 1, 0)
layout_mode = 2
[node name="Label" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "Game Paused"
[node name="ResumeButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Resume"
[node name="BugButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
script = ExtResource("12_cegan")
metadata/_custom_type_script = "uid://sa15wakvpj2e"
[node name="ToMenuButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Return to Menu"
[node name="ToSettingsButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Open Settings"
[node name="ToDesktopButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Quit to Desktop"
[node name="HSeparator" type="HSeparator" parent="PauseContainer/PauseMenu/VBoxContainer"]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[node name="FindHelplineButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Find Help-Lines"
[node name="Label2" type="Label" parent="PauseContainer/PauseMenu/VBoxContainer"]
layout_mode = 2
text = "opens findahelpline.com"
horizontal_alignment = 1
[node name="SkipStoryButton" type="Button" parent="PauseContainer/PauseMenu/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Skip this Story"
[connection signal="on_read" from="Disclaimer" to="Startup Menu" method="starting"] [connection signal="on_read" from="Disclaimer" to="Startup Menu" method="starting"]

View File

@ -253,7 +253,7 @@ _data = {
&"vanish": SubResource("Animation_a3iyq") &"vanish": SubResource("Animation_a3iyq")
} }
[node name="Main Menu" type="Panel"] [node name="MainMenu" type="Panel"]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0