|
|
|
@ -9,10 +9,11 @@ namespace Babushka.scripts.CSharp.Common.Savegame;
|
|
|
|
/// Handles the saving and loading of game states.
|
|
|
|
/// Handles the saving and loading of game states.
|
|
|
|
/// Holds the central SaveData object that serves as a temporary SaveFile.
|
|
|
|
/// Holds the central SaveData object that serves as a temporary SaveFile.
|
|
|
|
/// Automatically writes to disk on every scene change.
|
|
|
|
/// Automatically writes to disk on every scene change.
|
|
|
|
|
|
|
|
/// Uses the Godot Json Serializer, which may implicitly convert integers to floats, so be careful when extending!
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
public static class SavegameService
|
|
|
|
public static class SavegameService
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public static readonly string SavePath = "user://babushka_savegame.json";
|
|
|
|
public static string SavePath = "";
|
|
|
|
|
|
|
|
|
|
|
|
public static Dictionary<string, string> SaveDatas = new ();
|
|
|
|
public static Dictionary<string, string> SaveDatas = new ();
|
|
|
|
|
|
|
|
|
|
|
|
@ -72,8 +73,20 @@ public static class SavegameService
|
|
|
|
public static void Save()
|
|
|
|
public static void Save()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
string json = Json.Stringify(SaveDatas, indent: "\t");
|
|
|
|
string json = Json.Stringify(SaveDatas, indent: "\t");
|
|
|
|
using var file = FileAccess.Open(SavePath, FileAccess.ModeFlags.Write);
|
|
|
|
|
|
|
|
file.StoreString(json);
|
|
|
|
GD.Print(SavePath);
|
|
|
|
|
|
|
|
// create cloud directory
|
|
|
|
|
|
|
|
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(SavePath) ?? "");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
using var file = FileAccess.Open(SavePath, FileAccess.ModeFlags.Write);
|
|
|
|
|
|
|
|
file.StoreString(json);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GD.Print(e.Message);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
@ -83,8 +96,15 @@ public static class SavegameService
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if (!System.IO.File.Exists(SavePath))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
SaveDatas = new();
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string saveDataJson = FileAccess.GetFileAsString(SavePath);
|
|
|
|
string saveDataJson = FileAccess.GetFileAsString(SavePath);
|
|
|
|
SaveDatas = Json.ParseString(saveDataJson).AsGodotDictionary<string, string>();
|
|
|
|
SaveDatas = Json.ParseString(saveDataJson).AsGodotDictionary<string, string>();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch(Exception e)
|
|
|
|
catch(Exception e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|