Pickups + Save-diff

This commit is contained in:
anonoe 2026-02-10 15:18:49 +01:00
parent b49c0ee55f
commit bf874ba633
Signed by: anonoe
SSH key fingerprint: SHA256:OnAs6gNQelOnDiY5tBpDYKQiuTgBvnmIdMo5P09cdqg
11 changed files with 133 additions and 16 deletions

View file

@ -0,0 +1,36 @@
using Godot;
using System.Text.Json;
public partial class SaveManager : Node
{
public SaveState State { get; private set; } = new();
private const string SavePath = "user://save.json";
public override void _Ready()
{
Load();
}
public void Load()
{
if (!FileAccess.FileExists(SavePath))
{
GD.Print("No save found, starting fresh.");
State = new SaveState();
return;
}
var json = FileAccess.GetFileAsString(SavePath);
State = JsonSerializer.Deserialize<SaveState>(json) ?? new SaveState();
GD.Print($"Loaded save. CollectedPickups={State.CollectedPickups.Count}");
}
public void Save()
{
var json = JsonSerializer.Serialize(State, new JsonSerializerOptions { WriteIndented = true });
using var f = FileAccess.Open(SavePath, FileAccess.ModeFlags.Write);
f.StoreString(json);
GD.Print("Saved.");
}
}

View file

@ -0,0 +1 @@
uid://osk74jjhtcjy

View file

@ -0,0 +1,9 @@
using System.Collections.Generic;
//using Godot;
public class SaveState
{
public HashSet<string> CollectedPickups { get; set; } = new();
//public Vector2I? LastPlayerChunk { get; set; } // optional debug, requires "using Godot;"
//public int[]? LastPlayerChunk { get; set; } // [x,y] same debug as above, does not require Godot
}

View file

@ -0,0 +1 @@
uid://dd83uxjqtlmra