ValidationNode ITypeValidator <Rsi, MappingDataNode> .Validate(ISerializationManager serializationManager, MappingDataNode node, IDependencyCollection dependencies, ISerializationContext?context) { if (!node.TryGet("sprite", out var pathNode) || pathNode is not ValueDataNode valuePathNode) { return(new ErrorNode(node, "Missing/Invalid sprite node")); } if (!node.TryGet("state", out var stateNode) || stateNode is not ValueDataNode) { return(new ErrorNode(node, "Missing/Invalid state node")); } var path = serializationManager.ValidateNode(typeof(ResourcePath), new ValueDataNode($"{SharedSpriteComponent.TextureRoot / valuePathNode.Value}"), context); if (path is ErrorNode) { return(path); } return(new ValidatedValueNode(node)); }
DeserializationResult ITypeReader <Rsi, MappingDataNode> .Read(ISerializationManager serializationManager, MappingDataNode node, IDependencyCollection dependencies, bool skipHook, ISerializationContext?context) { if (!node.TryGet("sprite", out var pathNode)) { throw new InvalidMappingException("Expected sprite-node"); } if (!node.TryGet("state", out var stateNode) || stateNode is not ValueDataNode valueDataNode) { throw new InvalidMappingException("Expected state-node as a valuenode"); } var path = serializationManager.ReadValueOrThrow <ResourcePath>(pathNode, context, skipHook); return(new DeserializedValue <Rsi>(new Rsi(path, valueDataNode.Value))); }