You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
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<string, Variant>
|
|
{
|
|
{ "payload", Payload },
|
|
};
|
|
|
|
string id = GetMeta("SaveID").AsString();
|
|
SavegameService.AppendDataToSave( id, payloadData);
|
|
}
|
|
|
|
public void LoadFromSaveData()
|
|
{
|
|
string id = GetMeta("SaveID").AsString();
|
|
Dictionary<string, Variant> save = SavegameService.GetSaveData(id);
|
|
if (save.Count > 0)
|
|
{
|
|
if (Payload.VariantType == Variant.Type.Int)
|
|
{
|
|
Payload = save["payload"].AsInt32();
|
|
|
|
}
|
|
else
|
|
{
|
|
Payload = save["payload"];
|
|
}
|
|
}
|
|
}
|
|
} |