Browse Source

Merge pull request 'Preserve time in save files' (#20) from additional-save-properties into master

pull/22/head
Ryan Reed 1 month ago
parent
commit
58b533cad7
16 changed files with 98 additions and 12 deletions
  1. +4
    -4
      addons/save_load_system/autoloads/save_game_manager.gd
  2. +2
    -2
      addons/save_load_system/components/save_data_component.gd
  3. +1
    -1
      addons/save_load_system/resources/node_types/node3d_data_resource.gd
  4. +10
    -0
      addons/save_load_system/resources/node_types/node_data_resource.gd
  5. +1
    -0
      addons/save_load_system/resources/node_types/node_data_resource.gd.uid
  6. +7
    -0
      addons/save_load_system/resources/node_types/node_data_resource.tres
  7. +1
    -1
      addons/save_load_system/resources/save_game_data_resource.gd
  8. +19
    -0
      resources/save_load_node_types/day_night_cycle_data_resource.gd
  9. +1
    -0
      resources/save_load_node_types/day_night_cycle_data_resource.gd.uid
  10. +9
    -0
      resources/save_load_node_types/day_night_cycle_data_resource.tres
  11. +15
    -0
      resources/save_load_node_types/dropped_block_data_resource.gd
  12. +1
    -0
      resources/save_load_node_types/dropped_block_data_resource.gd.uid
  13. +11
    -0
      resources/save_load_node_types/dropped_block_data_resource.tres
  14. +6
    -1
      scenes/blocks/dropped_block.tscn
  15. +3
    -1
      scenes/world/day_night_cycle_component.gd
  16. +7
    -2
      scenes/world/day_night_cycle_component.tscn

+ 4
- 4
addons/save_load_system/autoloads/save_game_manager.gd View File

@ -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
@ -244,8 +244,8 @@ func _on_apply_save() -> void:
var root_node: Window = get_tree().root
for resource: Resource in _loaded_save_resource.save_data_nodes:
if resource is Node3DDataResource:
(resource as Node3DDataResource)._load_data(root_node)
if resource is NodeDataResource:
(resource as NodeDataResource)._load_data(root_node)
apply_complete.emit()


+ 2
- 2
addons/save_load_system/components/save_data_component.gd View File

@ -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:


+ 1
- 1
addons/save_load_system/resources/node_types/node3d_data_resource.gd View File

@ -1,6 +1,6 @@
## The base resource for saving a specific Node
class_name Node3DDataResource
extends Resource
extends NodeDataResource
@export var transform: Transform3D


+ 10
- 0
addons/save_load_system/resources/node_types/node_data_resource.gd View File

@ -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

+ 1
- 0
addons/save_load_system/resources/node_types/node_data_resource.gd.uid View File

@ -0,0 +1 @@
uid://ku7pqlxdta2r

+ 7
- 0
addons/save_load_system/resources/node_types/node_data_resource.tres View File

@ -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"

+ 1
- 1
addons/save_load_system/resources/save_game_data_resource.gd View File

@ -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

+ 19
- 0
resources/save_load_node_types/day_night_cycle_data_resource.gd View File

@ -0,0 +1,19 @@
## The base resource for saving a specific Node
class_name DayNightCycleDataResource
extends NodeDataResource
@export var time: float ## Time from DayNightCycleComponent.time
@export var node_path: NodePath
func _save_data(node: Node) -> void:
node_path = node.get_path()
time = node.time
func _load_data(window: Window) -> void:
var scene_node: DayNightCycleComponent = window.get_node_or_null(node_path)
if scene_node == null:
printerr("Couldn't find DayNightCycleDataResource.node_path")
return
scene_node.set_time.emit(time)

+ 1
- 0
resources/save_load_node_types/day_night_cycle_data_resource.gd.uid View File

@ -0,0 +1 @@
uid://7gwknxsl1fgd

+ 9
- 0
resources/save_load_node_types/day_night_cycle_data_resource.tres View File

@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="DayNightCycleDataResource" load_steps=2 format=3 uid="uid://ccv6fi1lk8ofm"]
[ext_resource type="Script" uid="uid://7gwknxsl1fgd" path="res://resources/save_load_node_types/day_night_cycle_data_resource.gd" id="1_jnnxf"]
[resource]
script = ExtResource("1_jnnxf")
time = 0.0
node_path = NodePath("")
metadata/_custom_type_script = "uid://7gwknxsl1fgd"

+ 15
- 0
resources/save_load_node_types/dropped_block_data_resource.gd View File

@ -0,0 +1,15 @@
class_name DroppedBlockDataResource
extends Node3DDataResource
@export var block_id: String = "001"
func _save_data(node: Node3D) -> void:
super._save_data(node)
block_id = node.id
func _load_data(_window: Window) -> void:
EntityManager.drop_block.emit(block_id, transform.origin, Vector3.ZERO, 0.0)

+ 1
- 0
resources/save_load_node_types/dropped_block_data_resource.gd.uid View File

@ -0,0 +1 @@
uid://ddk34r80lscu0

+ 11
- 0
resources/save_load_node_types/dropped_block_data_resource.tres View File

@ -0,0 +1,11 @@
[gd_resource type="Resource" script_class="DroppedBlockDataResource" load_steps=2 format=3 uid="uid://g26k1qtkabwf"]
[ext_resource type="Script" uid="uid://ddk34r80lscu0" path="res://resources/save_load_node_types/dropped_block_data_resource.gd" id="1_ax78v"]
[resource]
script = ExtResource("1_ax78v")
block_id = "001"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
node_path = NodePath("")
parent_node_path = NodePath("")
metadata/_custom_type_script = "uid://ddk34r80lscu0"

+ 6
- 1
scenes/blocks/dropped_block.tscn View File

@ -1,7 +1,9 @@
[gd_scene load_steps=8 format=3 uid="uid://dq6alec7d35gc"]
[gd_scene load_steps=10 format=3 uid="uid://dq6alec7d35gc"]
[ext_resource type="Script" uid="uid://d2uws50yjvp6w" path="res://scenes/blocks/dropped_block.gd" id="1_y8usf"]
[ext_resource type="PackedScene" uid="uid://c8dch55d3txns" path="res://scenes/blocks/block_mesh.tscn" id="2_5kft2"]
[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://addons/save_load_system/components/save_data_component.tscn" id="3_ix4xk"]
[ext_resource type="Resource" uid="uid://g26k1qtkabwf" path="res://resources/save_load_node_types/dropped_block_data_resource.tres" id="4_8xfh1"]
[sub_resource type="Animation" id="Animation_kym7p"]
length = 0.001
@ -124,4 +126,7 @@ monitorable = false
visible = false
shape = SubResource("SphereShape3D_5kft2")
[node name="SaveDataComponent" parent="." instance=ExtResource("3_ix4xk")]
save_data_resource = ExtResource("4_8xfh1")
[connection signal="body_entered" from="PickupArea" to="." method="_on_pickup_area_body_entered"]

+ 3
- 1
scenes/world/day_night_cycle_component.gd View File

@ -1,4 +1,5 @@
extends Node3D
class_name DayNightCycleComponent
extends Node
signal end_of_day
@ -66,6 +67,7 @@ func _ready() -> void:
resume_time.connect(_on_resume_time)
set_day_length.connect(_on_set_day_length)
set_rate_of_time.connect(_on_set_rate_of_time)
set_time.connect(_on_set_time)
func update_tick_rate(new_rate: float = 1.0) -> void:


+ 7
- 2
scenes/world/day_night_cycle_component.tscn View File

@ -1,4 +1,4 @@
[gd_scene load_steps=11 format=3 uid="uid://58cvwtpnkq8r"]
[gd_scene load_steps=13 format=3 uid="uid://58cvwtpnkq8r"]
[ext_resource type="Script" uid="uid://odh7sbmaku32" path="res://scenes/world/day_night_cycle_component.gd" id="1_xc0aj"]
[ext_resource type="Gradient" uid="uid://bgsedjexjylfr" path="res://resources/world/moon_color_gradient.tres" id="2_65gyo"]
@ -7,6 +7,8 @@
[ext_resource type="Curve" uid="uid://ds0dqy41plskw" path="res://resources/world/sun_intensity_curve.tres" id="5_wylv2"]
[ext_resource type="Gradient" uid="uid://d0cpq2rok3jsi" path="res://resources/world/sky_top_color_gradient.tres" id="6_ckt1h"]
[ext_resource type="Gradient" uid="uid://dvpnjt66dtk46" path="res://resources/world/sky_horizon_color_gradient.tres" id="7_03v7x"]
[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://addons/save_load_system/components/save_data_component.tscn" id="8_65gyo"]
[ext_resource type="Resource" uid="uid://ccv6fi1lk8ofm" path="res://resources/save_load_node_types/day_night_cycle_data_resource.tres" id="9_bdvt6"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_4rhad"]
@ -19,7 +21,7 @@ sky = SubResource("Sky_dphjl")
tonemap_mode = 2
glow_enabled = true
[node name="DayNightCycleComponent" type="Node3D" node_paths=PackedStringArray("environment", "sun", "moon")]
[node name="DayNightCycleComponent" type="Node" node_paths=PackedStringArray("environment", "sun", "moon")]
script = ExtResource("1_xc0aj")
moon_color = ExtResource("2_65gyo")
moon_intensity = ExtResource("3_bdvt6")
@ -42,3 +44,6 @@ shadow_enabled = true
[node name="Moon" type="DirectionalLight3D" parent="."]
shadow_enabled = true
sky_mode = 1
[node name="SaveDataComponent" parent="." instance=ExtResource("8_65gyo")]
save_data_resource = ExtResource("9_bdvt6")

Loading…
Cancel
Save