finalize implement savegame loading trough main menu

This commit is contained in:
betalars 2024-10-18 17:31:46 +02:00
parent 7cede4f0ac
commit 356f9fd24a
2 changed files with 171 additions and 4 deletions

View File

@ -1,13 +1,25 @@
extends Node3D extends Node3D
signal room_loaded
var has_stage: bool = false:
set(stage):
has_stage = stage
if in_game and has_stage:
in_game = false
_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 menu_animation: AnimationTree = %MenuAnimationTree @onready var menu_animation: AnimationTree = %MenuAnimationTree
@onready var focus_forward = %"Main Menu" @onready var focus_forward = %"Main Menu"
var current_room_id: State.rooms
var in_game = false var in_game = false
var current_loaded_room: Node3D var current_loaded_room: Node3D
@ -29,12 +41,17 @@ func _ready():
func _process(delta: float) -> void: func _process(delta: float) -> void:
if currently_loading_room != "": if currently_loading_room != "":
var progress:Array if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3:
if ResourceLoader.load_threaded_get_status(youth_room_path, progress) == 3:
current_loaded_room = ResourceLoader.load_threaded_get(youth_room_path).instantiate() current_loaded_room = ResourceLoader.load_threaded_get(youth_room_path).instantiate()
add_child(current_loaded_room) add_child(current_loaded_room)
move_child(current_loaded_room, 0) move_child(current_loaded_room, 0)
currently_loading_room = "" 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()
$"Messe-Menue".show()
func debug_youth(): func debug_youth():
get_child(1).hide() get_child(1).hide()
@ -42,3 +59,51 @@ func debug_youth():
get_child(3).hide() get_child(3).hide()
get_child(0).get_ready() get_child(0).get_ready()
get_child(0).start() get_child(0).start()
func _return_to_menu():
State.active_save_game = null
menu_animation["parameters/conditions/start_game"] = false
State.pass_stage_to(main_menu)
currently_loading_room = get_room_path_from_id(main_menu.save_game_handle.get_most_recent_save().current_room)
menu_animation["parameters/conditions/return_to_menu"] = true
await(get_tree().create_timer(0.5).timeout)
menu_animation["parameters/conditions/return_to_menu"] = false
_on_ready_to_unload()
func load_save(save: SaveGame):
#if currently_loading_room != "":
# await(room_loaded)
if save.current_room != current_room_id:
# 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)
await(room_loaded)
menu_animation["parameters/conditions/start_game"] = true
State.active_save_game = save
State.pass_stage_to(get_child(0))
func _on_ready_to_unload():
if get_child(0) is Node3D:
get_child(0).free()
func get_room_path_from_id(id: State.rooms) -> String:
match id:
State.rooms.YOUTH, State.rooms.MENU, State.rooms.DRAVEN:
return youth_room_path
State.rooms.TRANSITION:
return transition_room_path
State.rooms.ADULTHOOD:
return adulthood_room_path
_:
return ending_path
func start_demo():
load_save(SaveGame.new())
$"Messe-Menue".hide()

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=16 format=3 uid="uid://b51wdql4mby47"] [gd_scene load_steps=27 format=3 uid="uid://b51wdql4mby47"]
[ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/easy-handwriting.theme" id="1_2dg4n"] [ext_resource type="Theme" uid="uid://b056fn288p8ha" path="res://logic-scenes/themes/handwriting.theme" id="1_2dg4n"]
[ext_resource type="Script" path="res://logic-scenes/main menu/main_menu.gd" id="2_rm576"] [ext_resource type="Script" path="res://logic-scenes/main menu/main_menu.gd" id="2_rm576"]
[ext_resource type="PackedScene" uid="uid://gmxenhavh1lp" path="res://logic-scenes/main menu/video_settings.tscn" id="3_f0dcd"] [ext_resource type="PackedScene" uid="uid://gmxenhavh1lp" path="res://logic-scenes/main menu/video_settings.tscn" id="3_f0dcd"]
[ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://logic-scenes/main menu/logo.png" id="3_xb2np"] [ext_resource type="Texture2D" uid="uid://d3ewjumh0b0g6" path="res://logic-scenes/main menu/logo.png" id="3_xb2np"]
@ -10,6 +10,8 @@
[ext_resource type="PackedScene" uid="uid://dxwqkxq6qjk7i" path="res://logic-scenes/main menu/gameplay_settings.tscn" id="6_p7ypt"] [ext_resource type="PackedScene" uid="uid://dxwqkxq6qjk7i" path="res://logic-scenes/main menu/gameplay_settings.tscn" id="6_p7ypt"]
[ext_resource type="PackedScene" uid="uid://chal0ioagspx0" path="res://logic-scenes/main menu/content_settings.tscn" id="7_pnd48"] [ext_resource type="PackedScene" uid="uid://chal0ioagspx0" path="res://logic-scenes/main menu/content_settings.tscn" id="7_pnd48"]
[ext_resource type="Script" path="res://logic-scenes/main menu/save_game_list.gd" id="8_o0cpj"] [ext_resource type="Script" path="res://logic-scenes/main menu/save_game_list.gd" id="8_o0cpj"]
[ext_resource type="Script" path="res://dev-util/savegame.gd" id="11_cspq7"]
[ext_resource type="Texture2D" uid="uid://bk5ja14r7r6i4" path="res://import/interface-elements/empty_save_slot.png" id="12_6qu04"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_njt06"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_njt06"]
@ -247,6 +249,105 @@ _data = {
"vanish": SubResource("Animation_a3iyq") "vanish": SubResource("Animation_a3iyq")
} }
[sub_resource type="Resource" id="Resource_civda"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-10_16:20:34"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72857e+09
is_save_file_valid = false
[sub_resource type="Resource" id="Resource_ny8h2"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-11_15:37:47"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72865e+09
is_save_file_valid = false
[sub_resource type="Resource" id="Resource_eypce"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-12_00:52:41"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72869e+09
is_save_file_valid = false
[sub_resource type="Resource" id="Resource_0aleq"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-16_00:20:28"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72903e+09
is_save_file_valid = false
[sub_resource type="Resource" id="Resource_yamni"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-16_01:04:19"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72903e+09
is_save_file_valid = false
[sub_resource type="Resource" id="Resource_ofqsy"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-16_01:25:54"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72903e+09
is_save_file_valid = false
[sub_resource type="Resource" id="Resource_775qv"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-16_01:41:58"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72904e+09
is_save_file_valid = false
[sub_resource type="Resource" id="Resource_epdda"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-16_02:39:09"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72904e+09
is_save_file_valid = false
[sub_resource type="Resource" id="Resource_idh7b"]
script = ExtResource("11_cspq7")
filepath = ""
unique_save_name = "frame_of_mind_2024-10-16_02:46:05"
current_room = 0
mementos_complete = 0
board_state = {}
thumbnail = ExtResource("12_6qu04")
last_saved = 1.72904e+09
is_save_file_valid = false
[node name="Main Menu" type="Panel"] [node name="Main Menu" type="Panel"]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@ -396,6 +497,7 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("8_o0cpj") script = ExtResource("8_o0cpj")
saves = Array[ExtResource("11_cspq7")]([SubResource("Resource_civda"), SubResource("Resource_ny8h2"), SubResource("Resource_eypce"), SubResource("Resource_0aleq"), SubResource("Resource_yamni"), SubResource("Resource_ofqsy"), SubResource("Resource_775qv"), SubResource("Resource_epdda"), SubResource("Resource_idh7b")])
[node name="ScrollContainer" type="ScrollContainer" parent="."] [node name="ScrollContainer" type="ScrollContainer" parent="."]
layout_mode = 0 layout_mode = 0