Custom save data

Step 1: Define Your Data Class

[Serializable]
public class MyModData
{
    public int MyCounter { get; set; }
    public string MyText { get; set; }
}

Step 2: Create Save Data Handler

public class MyMod : IMod
{
    private ModSaveData<MyModData> _saveData;

    public MyMod()
    {
        // Option A: Manual filename
        _saveData = new ModSaveData<MyModData>("my-mod-data.json");

        // Option B: Automatic filename from assembly
        _saveData = this.CreateSaveData<MyModData>();
    }
}

Step 3: Use Your Data

// Read
int counter = _saveData.Data.MyCounter;

// Write
_saveData.Data.MyCounter++;
_saveData.Data.MyText = "Hello World";

// Reset
_saveData.Reset();

That's it! The data automatically saves and loads.

Optional: Listen to Events

_saveData.OnDataLoaded += data =>
{
    Console.WriteLine($"Loaded: {data.MyCounter}");
};

_saveData.OnDataSaving += data =>
{
    Console.WriteLine($"Saving: {data.MyCounter}");
};