gardens-of-nil-3d-u6/Assets/Scripts/Intrepid/Integration/Persistence/ConfigurationPersistenceService.cs
2026-06-26 11:18:49 +01:00

57 lines
1.7 KiB
C#

using System;
using Intrepid.Integration.Persistence.DTOs;
using Intrepid.SaveSystem;
using Intrepid.Utilities;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Intrepid.Integration.Persistence
{
[Serializable]
[CreateAssetMenu(fileName = "Persistence Configuration", menuName = "GON/Services/Persistence Configuration")]
public class ConfigurationPersistenceService : AbstractPersistenceService<ConfigurationSaveFileDTO>
{
private const string ConfigurationSaveFileName = "configuration";
[GroupDebug, ReadOnly, ShowInInspector, PropertyOrder(1000), InlineProperty, HideLabel, PropertySpace, Title("Current Slot")]
private ConfigurationSaveFileDTO configurationFile;
public ConfigurationDTO Configuration => configurationFile?.configuration;
public bool HasLastGame => Configuration.lastGameSlotType != GameDataSlotType.None;
public void Load()
{
if (Exists(ConfigurationSaveFileName))
LoadConfiguration();
else
CreateNewConfiguration();
}
[GroupDebug]
[Button]
public void CreateNewConfiguration()
{
configurationFile = new ConfigurationSaveFileDTO
{
fileId = ConfigurationSaveFileName,
configuration = ConfigurationDTO.WithInitialValues()
};
SaveConfigurationQuietly();
}
[GroupDebug]
[Button]
public async void SaveConfigurationQuietly()
{
await Save(configurationFile);
}
[GroupDebug]
[Button]
public void LoadConfiguration()
{
configurationFile = Load(ConfigurationSaveFileName);
}
}
}