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();