Improvements to Chinthe animation logic Fix broken Godot Tool system and just use a more manual approach to setting map nodes Remove ItemDatabase from individual room scenes
32 lines
992 B
C#
32 lines
992 B
C#
using System.Collections.Immutable;
|
|
using System.Text.Json.Serialization.Metadata;
|
|
using Zennysoft.Game.Abstractions;
|
|
|
|
namespace Zennysoft.Ma.Adapter;
|
|
|
|
public interface IMaSaveFileManager
|
|
{
|
|
Task Save<T>(T gameData);
|
|
|
|
Task<T?> Load<T>();
|
|
}
|
|
|
|
public sealed class MaSaveFileManager : IMaSaveFileManager
|
|
{
|
|
private readonly ISaveFileManager _saveFileManager;
|
|
private ImmutableList<IJsonTypeInfoResolver> _converters;
|
|
|
|
public MaSaveFileManager(ISaveFileManager saveFileManager)
|
|
{
|
|
_saveFileManager = saveFileManager;
|
|
_converters = [WeaponTagEnumContext.Default, ItemTagEnumContext.Default, ElementTypeEnumContext.Default, AccessoryTagEnumContext.Default, ThrowableItemTagEnumContext.Default, UsableItemTagEnumContext.Default, BoxItemTagEnumContext.Default];
|
|
}
|
|
|
|
public async Task Save<T>(T gameData)
|
|
{
|
|
await _saveFileManager.WriteToFile(gameData, [.. _converters]);
|
|
}
|
|
|
|
public async Task<T?> Load<T>() => await _saveFileManager.ReadFromFile<T>([.. _converters]);
|
|
}
|