init: add project

This commit is contained in:
Bragin Stepan
2026-02-18 23:02:28 +05:00
commit 4f01e66894
620 changed files with 52253 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
using System;
using System.Collections;
using Assets._Project.Develop.Runtime.Utilities.DataManagement.DataRepository;
using Assets._Project.Develop.Runtime.Utilities.DataManagement.KeysStorage;
using Assets._Project.Develop.Runtime.Utilities.DataManagement.Serializers;
namespace Assets._Project.Develop.Runtime.Utilities.DataManagement
{
public class SaveLoadService : ISaveLoadService
{
private readonly IDataSerializer _serializer;
private readonly IDataKeysStorage _keysStorage;
private readonly IDataRepository _repository;
public SaveLoadService(
IDataSerializer serializer,
IDataKeysStorage keysStorage,
IDataRepository repository)
{
_serializer = serializer;
_keysStorage = keysStorage;
_repository = repository;
}
public IEnumerator Exists<TData>(Action<bool> onExistsResult) where TData : ISaveData
{
string key = _keysStorage.GetKeyFor<TData>();
yield return _repository.Exists(key, result => onExistsResult?.Invoke(result));
}
public IEnumerator Load<TData>(Action<TData> onLoad) where TData : ISaveData
{
string key = _keysStorage.GetKeyFor<TData>();
string serializedData = "";
yield return _repository.Read(key, result => serializedData = result);
TData data = _serializer.Deserialize<TData>(serializedData);
onLoad?.Invoke(data);
}
public IEnumerator Remove<TData>() where TData : ISaveData
{
string key = _keysStorage.GetKeyFor<TData>();
yield return _repository.Remove(key);
}
public IEnumerator Save<TData>(TData data) where TData : ISaveData
{
string serializedData = _serializer.Serialize(data);
string key = _keysStorage.GetKeyFor<TData>();
yield return _repository.Write(key, serializedData);
}
}
}