feat: entity register for serialized entity references

This commit is contained in:
2025-04-30 19:18:12 +03:00
parent 4c41870732
commit d2ca85568f
22 changed files with 185 additions and 113 deletions

View File

@@ -6,13 +6,9 @@ using YamlDotNet.Serialization;
namespace Syntriax.Engine.Core.Serialization;
public class StateEnableSerializer : IEngineTypeYamlSerializer
public class StateEnableSerializer : EngineTypeYamlSerializerBase<IStateEnable>
{
private const string SERIALIZED_SCALAR_NAME = "Properties";
public bool Accepts(Type type) => typeof(IStateEnable).IsAssignableFrom(type);
public object? ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer)
public override IStateEnable? Read(IParser parser, Type type, ObjectDeserializer rootDeserializer)
{
bool enabled;
@@ -27,7 +23,7 @@ public class StateEnableSerializer : IEngineTypeYamlSerializer
if (parser.Consume<Scalar>().Value.CompareTo(SERIALIZED_SCALAR_NAME) != 0)
throw new();
SerializedClass instanceSerializedClass = (SerializedClass)rootDeserializer(typeof(SerializedClass))!;
stateEnable = (IStateEnable)instanceSerializedClass.CreateInstance();
stateEnable = (IStateEnable)instanceSerializedClass.CreateInstance(EntityRegistry);
parser.Consume<MappingEnd>();
@@ -36,7 +32,7 @@ public class StateEnableSerializer : IEngineTypeYamlSerializer
return stateEnable;
}
public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer)
public override void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer)
{
IStateEnable stateEnable = (IStateEnable)value!;