using Babushka.scripts.CSharp.Common.Savegame; using Godot; using Godot.Collections; namespace Babushka.scripts.CSharp.Low_Code.Variables; public partial class SaveableVariableNode : VariableNode, ISaveable { public override void _Ready() { LoadFromSaveData(); ValueChanged += UpdateSaveData; } public override void _ExitTree() { ValueChanged -= UpdateSaveData; } public void UpdateSaveData() { var payloadData = new Dictionary { { "payload", Payload }, }; string id = GetMeta("SaveID").AsString(); SavegameService.AppendDataToSave( id, payloadData); } public void LoadFromSaveData() { string id = GetMeta("SaveID").AsString(); Dictionary save = SavegameService.GetSaveData(id); if (save.Count > 0) { if (Payload.VariantType == Variant.Type.Int) { Payload = save["payload"].AsInt32(); } else { Payload = save["payload"]; } } } }