Files
unity-save-system/Runtime/Settings/SaveSystemSettings.cs
Sebastian Bularca b5d13e86d9 copy from github
2026-03-27 15:14:08 +01:00

49 lines
1.7 KiB
C#

using System;
using System.IO;
using Newtonsoft.Json;
using UnityEngine;
namespace Jovian.SaveSystem {
/// <summary>
/// Configuration for the save system. Stored as JSON in ProjectSettings/SaveSystemSettings.json.
/// </summary>
[Serializable]
public sealed class SaveSystemSettings {
private const string SettingsPath = "ProjectSettings/SaveSystemSettings.json";
public SaveFormat saveFormat = SaveFormat.Json;
public int maxAutoSavesPerSession = 3;
public int currentSaveVersion = 1;
public string obfuscationKey = "default-key";
public string saveDirectoryName = "saves";
public static SaveSystemSettings Load() {
if(!File.Exists(SettingsPath)) {
return new SaveSystemSettings();
}
try {
var json = File.ReadAllText(SettingsPath);
return JsonConvert.DeserializeObject<SaveSystemSettings>(json) ?? new SaveSystemSettings();
} catch(Exception e) {
Debug.LogWarning($"[SaveSystem] Failed to load settings: {e.Message}. Using defaults.");
return new SaveSystemSettings();
}
}
public void Save() {
try {
var directory = Path.GetDirectoryName(SettingsPath);
if(!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
Directory.CreateDirectory(directory);
}
var json = JsonConvert.SerializeObject(this, Formatting.Indented);
File.WriteAllText(SettingsPath, json);
} catch(Exception e) {
Debug.LogError($"[SaveSystem] Failed to save settings: {e.Message}");
}
}
}
}