using System;
using Svelto.ECS;
using Svelto.ECS.Serialization;
using GamecraftModdingAPI.Utility;
namespace GamecraftModdingAPI.Persistence
{
///
/// Entity serializer and deserializer interface for storing and retrieving data in a Gamecraft save file (GameSave.GC).
///
public interface IEntitySerializer : IDeserializationFactory, IQueryingEntitiesEngine
{
///
/// The entity factory used for creating entities and entity components.
///
/// The entity factory.
IEntityFactory EntityFactory { set; }
///
/// Serialize the entities.
///
/// Whether serialization was successful.
/// Serialized data to write to (writes to GameSave.GC).
/// Entities db for the game.
/// Entity serializer with support for single-entity serialization.
bool Serialize(ref ISerializationData serializationData, EntitiesDB entitiesDB, IEntitySerialization entitySerializer);
///
/// Deserialize the entities.
///
/// Whether deserialization was successful.
/// Serialized data to read from (read from GameSave.GC).
/// Entity serializer with support for single-entity deserialization.
bool Deserialize(ref ISerializationData serializationData, IEntitySerialization entitySerializer);
}
}