From 82fe344c127a7baa09e6353c587398a0fcde7b1d Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Fri, 28 Mar 2025 15:44:30 -0400 Subject: [PATCH] Allow for Node type resource saving --- addons/save_load_system/autoloads/save_game_manager.gd | 4 ++-- .../save_load_system/components/save_data_component.gd | 4 ++-- .../resources/node_types/node3d_data_resource.gd | 2 +- .../resources/node_types/node_data_resource.gd | 10 ++++++++++ .../resources/node_types/node_data_resource.gd.uid | 1 + .../resources/node_types/node_data_resource.tres | 7 +++++++ .../resources/save_game_data_resource.gd | 2 +- 7 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 addons/save_load_system/resources/node_types/node_data_resource.gd create mode 100644 addons/save_load_system/resources/node_types/node_data_resource.gd.uid create mode 100644 addons/save_load_system/resources/node_types/node_data_resource.tres diff --git a/addons/save_load_system/autoloads/save_game_manager.gd b/addons/save_load_system/autoloads/save_game_manager.gd index 61e4c86..ecbfc13 100644 --- a/addons/save_load_system/autoloads/save_game_manager.gd +++ b/addons/save_load_system/autoloads/save_game_manager.gd @@ -130,8 +130,8 @@ func _generate_save_game_resource() -> SaveGameDataResource: for node: Node in nodes: if node is SaveDataComponent: @warning_ignore("unsafe_method_access") - var save_data_resource: Node3DDataResource = node._save_data() - var save_final_resource: Node3DDataResource = save_data_resource.duplicate() + var save_data_resource: NodeDataResource = node._save_data() + var save_final_resource: NodeDataResource = save_data_resource.duplicate() _resource.save_data_nodes.append(save_final_resource) return _resource diff --git a/addons/save_load_system/components/save_data_component.gd b/addons/save_load_system/components/save_data_component.gd index 9c801e1..52ab333 100644 --- a/addons/save_load_system/components/save_data_component.gd +++ b/addons/save_load_system/components/save_data_component.gd @@ -5,9 +5,9 @@ class_name SaveDataComponent extends Node -@export var save_data_resource: Node3DDataResource ## The resource describing the type of object being saved +@export var save_data_resource: Resource ## The resource describing the type of object being saved -@onready var parent_node: Node3D = get_parent() +@onready var parent_node: Node = get_parent() func _ready() -> void: diff --git a/addons/save_load_system/resources/node_types/node3d_data_resource.gd b/addons/save_load_system/resources/node_types/node3d_data_resource.gd index ccde21c..9a4e46f 100644 --- a/addons/save_load_system/resources/node_types/node3d_data_resource.gd +++ b/addons/save_load_system/resources/node_types/node3d_data_resource.gd @@ -1,6 +1,6 @@ ## The base resource for saving a specific Node class_name Node3DDataResource -extends Resource +extends NodeDataResource @export var transform: Transform3D diff --git a/addons/save_load_system/resources/node_types/node_data_resource.gd b/addons/save_load_system/resources/node_types/node_data_resource.gd new file mode 100644 index 0000000..0a08552 --- /dev/null +++ b/addons/save_load_system/resources/node_types/node_data_resource.gd @@ -0,0 +1,10 @@ +## The base resource for saving a specific Node +class_name NodeDataResource +extends Resource + + +func _save_data(node: Node3D) -> void: + pass + +func _load_data(_window: Window) -> void: + pass diff --git a/addons/save_load_system/resources/node_types/node_data_resource.gd.uid b/addons/save_load_system/resources/node_types/node_data_resource.gd.uid new file mode 100644 index 0000000..aaef0a3 --- /dev/null +++ b/addons/save_load_system/resources/node_types/node_data_resource.gd.uid @@ -0,0 +1 @@ +uid://ku7pqlxdta2r diff --git a/addons/save_load_system/resources/node_types/node_data_resource.tres b/addons/save_load_system/resources/node_types/node_data_resource.tres new file mode 100644 index 0000000..5f783b7 --- /dev/null +++ b/addons/save_load_system/resources/node_types/node_data_resource.tres @@ -0,0 +1,7 @@ +[gd_resource type="Resource" script_class="NodeDataResource" load_steps=2 format=3 uid="uid://btcyin8cer74n"] + +[ext_resource type="Script" uid="uid://ku7pqlxdta2r" path="res://addons/save_load_system/resources/node_types/node_data_resource.gd" id="1_0d08a"] + +[resource] +script = ExtResource("1_0d08a") +metadata/_custom_type_script = "uid://ku7pqlxdta2r" diff --git a/addons/save_load_system/resources/save_game_data_resource.gd b/addons/save_load_system/resources/save_game_data_resource.gd index 3da5a77..8042047 100644 --- a/addons/save_load_system/resources/save_game_data_resource.gd +++ b/addons/save_load_system/resources/save_game_data_resource.gd @@ -5,7 +5,7 @@ extends Resource @export var game_version: String = ProjectSettings.get_setting("application/config/version") -@export var save_data_nodes: Array[Node3DDataResource] +@export var save_data_nodes: Array[NodeDataResource] @export var save_name: String @export var save_date: String