|
## Performs the actual saving and loading of data related to this level/scene
|
|
## Utilized by the SaveGameManager
|
|
class_name SaveLevelDataComponent
|
|
extends Node
|
|
|
|
## See documentation to where this path is: https://docs.godotengine.org/en/stable/tutorials/io/data_paths.html#accessing-persistent-user-data-user[br][br]
|
|
## Default Paths:[br]
|
|
## * Windows: %APPDATA%\Godot\app_userdata\[project_name][br]
|
|
## * macOS: ~/Library/Application Support/Godot/app_userdata/[project_name][br]
|
|
## * Linux: ~/.local/share/godot/app_userdata/[project_name][br]
|
|
@export var save_game_data_path: String = "user://game_data/"
|
|
@export var max_auto_saves: int = 5
|
|
|
|
@export_group("Save File Names")
|
|
@export var save_file_name: String = "save_%s_game_data.tres" ## %s is the level name
|
|
@export var quicksave_file_name: String = "quicksave_game_data.tres"
|
|
@export var autosave_file_name: String = "autosave_%s_game_data.tres" ## %s is the save number (probably 01)
|
|
|
|
var level_scene_name: String
|
|
var game_data_resource: SaveGameDataResource
|
|
|
|
|
|
func _ready() -> void:
|
|
add_to_group("save_level_data_component")
|
|
level_scene_name = get_parent().name
|
|
|
|
SaveGameManager.create_auto_save_file.connect(_on_create_auto_save_file)
|
|
|
|
|
|
func load_game() -> void:
|
|
SaveGameManager.load_save_file.emit(save_file_name % level_scene_name)
|
|
|
|
func quick_load_game() -> void:
|
|
SaveGameManager.quick_load.emit()
|
|
|
|
func quick_save_game() -> void:
|
|
SaveGameManager.quick_save.emit()
|
|
|
|
func save_game() -> void:
|
|
SaveGameManager.create_save_file.emit(save_file_name % level_scene_name)
|
|
|
|
|
|
func _on_create_auto_save_file() -> void:
|
|
# TODO: Check max number of autosaves, increment existing autosaves, etc
|
|
#_save_game_as_resource(autosave_file_name % "01")
|
|
pass
|