using System.Collections.Immutable; using System.Text.Json.Serialization.Metadata; using Zennysoft.Game.Abstractions; namespace Zennysoft.Ma.Adapter; public interface IMaSaveFileManager { Task Save(T gameData); Task Load(); } public sealed class MaSaveFileManager : IMaSaveFileManager { private readonly ISaveFileManager _saveFileManager; private ImmutableList _converters; public MaSaveFileManager(ISaveFileManager saveFileManager) { _saveFileManager = saveFileManager; _converters = [HealthComponentContext.Default, WeaponTagEnumContext.Default, ItemTagEnumContext.Default, ElementTypeEnumContext.Default, AccessoryTagEnumContext.Default, ThrowableItemTagEnumContext.Default, UsableItemTagEnumContext.Default, BoxItemTagEnumContext.Default]; } public async Task Save(T gameData) { await _saveFileManager.WriteToFile(gameData, [.. _converters]); } public async Task Load() => await _saveFileManager.ReadFromFile([.. _converters]); }