From 638ebaff46a68ca0d29042b1bcdd5d6733e75cf7 Mon Sep 17 00:00:00 2001 From: kziolkowski Date: Tue, 25 Nov 2025 13:46:46 +0100 Subject: [PATCH] :memo: Added documentation --- scripts/CSharp/Common/Savegame/ISaveable.cs | 2 ++ scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs | 8 +++++++- scripts/CSharp/Common/Temp/MVPDuck.cs | 7 +++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/CSharp/Common/Savegame/ISaveable.cs b/scripts/CSharp/Common/Savegame/ISaveable.cs index 060b1b0..5e9f37b 100644 --- a/scripts/CSharp/Common/Savegame/ISaveable.cs +++ b/scripts/CSharp/Common/Savegame/ISaveable.cs @@ -2,6 +2,8 @@ namespace Babushka.scripts.CSharp.Common.Savegame; /// /// Defines the behaviour of Nodes that have fields that should save / load to disk. +/// When implementing new Saveable objects, please beware: Please check if object instances need to be identified separately. +/// If so, make sure to give them a proper ID. You can use the tool for that. /// public interface ISaveable { diff --git a/scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs b/scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs index 5ba38ed..9b7de2e 100644 --- a/scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs +++ b/scripts/CSharp/Common/Savegame/SaveIDProviderTool.cs @@ -4,9 +4,16 @@ using Godot.Collections; namespace Babushka.scripts.CSharp.Common.Savegame; +/// +/// And editor tool that lives in the scene scope and iterates over saveable nodes and assigns them unique IDs where necessary. +/// It only works if the object (prefab) in question has been added to the "Saveable"-group beforehand. +/// [Tool] public partial class SaveIDProviderTool : Node { + /// + /// Creates an inspector button that calls the AssignIDs method. + /// [ExportToolButton("Assign IDs")] private Callable assignIDs => Callable.From(AssignIDs); private void AssignIDs() @@ -15,7 +22,6 @@ public partial class SaveIDProviderTool : Node foreach (var node in saveables) { GD.Print($"Checking {node.Name}."); - GD.Print($"Node has Meta SaveID: {node.HasMeta("SaveID")} and it's: " + node.GetMeta("SaveID").AsString()); if (!node.HasMeta("SaveID") || string.IsNullOrEmpty(node.GetMeta("SaveID").AsString())) { string saveID = Guid.NewGuid().ToString(); diff --git a/scripts/CSharp/Common/Temp/MVPDuck.cs b/scripts/CSharp/Common/Temp/MVPDuck.cs index d0e8f69..eb34f46 100644 --- a/scripts/CSharp/Common/Temp/MVPDuck.cs +++ b/scripts/CSharp/Common/Temp/MVPDuck.cs @@ -12,6 +12,7 @@ namespace Babushka.scripts.CSharp.Common.Temp; public partial class MVPDuck : Node2D, ISaveable { [ExportGroup("Persistence")] + // A container for the current scene. Used to automatically add the current scene context to the save ID. [Export] public VariableResource _sceneKeyProvider; [ExportGroup("Animation")] @@ -56,6 +57,9 @@ public partial class MVPDuck : Node2D, ISaveable #region SAVE AND LOAD + /// + // Saves duck position. + /// public void UpdateSaveData() { var payloadData = new Dictionary @@ -69,6 +73,9 @@ public partial class MVPDuck : Node2D, ISaveable SavegameService.AppendDataToSave(_sceneKeyProvider.Payload.AsString(), id, payloadData); } + /// + /// Loads duck position. + /// public void LoadFromSaveData() { var sceneName = _sceneKeyProvider.Payload.AsString();