Framework for the implementation of format converters like game assets or media files
New stable release! π π There are new features, bug fixes but also some architecture changes and a new documentation website π€© The core concept of the framework is the same but there are some breaking changes in APIs and technology replacements (plugins API).
These changes have been extensively tested in the new SceneGate projects (UI tool, Ekona, Lemon) and modding projects. Releasing v4.0 is a new milestone in SceneGate that allows us to start shipping the first versions of these projects.
Stream
typeConvertTo
, TransformTo
and DataStream.ReadFormat<T>()
IInitializer<T>
. Use the constructor instead.
DataStream
does NOT throw EndOfStreamException
when reading bytes.
ReadByte
returns -1
when it reaches the end instead of throwing an exception.DataReader
keeps the behavior and it will throw EndOfStreamException
when reading any data type.DataStream.Length
setter to its own method SetLength(long)
.TextReader
and TextWriter
to TextDataReader
and TextDataWriter
.IStream
interface in favor of Stream
.TextDataReader
will not return null
string if it starts reading from the end already. It will throw EndOfStreamException
.DataStream.Seek
now requires a negative argument to go back positions when origin
is SeekOrigin.End
.DataReader
and DataWriter
and moved into new types BinaryDeserializer
and BinarySerializer
.
BinarySerializable
is no longer required and it's removed.BinaryOrder
is mandatory for properties in projects running in .NET 6.0ReadAs
and WriteAs
is now UnderlyingType
As part of this release we had 49 issues closed.
Full Changelog: https://github.com/SceneGate/Yarhl/compare/v3.1.0...v4.0.0
As part of this release we had 21 issues closed. Several features and bug improvements in IO like the new cool binary (de)serializer. Use the new build system from PleOps.Cake. Deprecate .NET Framework 4.6.1.
Special thanks to @Kaplas80, @Megaflan, @Darkmet98 and @pleonex.
Bugs
Enhancements
This release focuses in API user-experience enhancements. The transform and format API methods and base classes are now easier to understand and use. New convenience methods introduced and factories. Extensibilities in the IO namespace to support advance use cases as we have more applications using Yarhl.
Special thanks to all the contributors: @Kaplas80, @pleonex and @priverop and to all our users providing great feedback. Especially the guys from TraduSquare.
Features
IInitializer<T>
(#93 by @pleonex)DataStreamFactory
to create DataStream
(#111 by @pleonex)NodeFactory.FromSubstream
(673ad2d by @pleonex)DataStream
from a byte array (9158dea by @pleonex)IStream
(#129 by @Kaplas80)IStream
(#109 by @pleonex)RecyclableMemoryStream
for memory DataStream
(#111 by @pleonex)IBinary
to mark binary types (other than BinaryFormat
) (0450b98 by @pleonex)DataStream.Compare
(#110 by @pleonex)DataReader.ReadStringToToken()
(#137 by @pleonex)TextReader
and TextWriter
with the encoding name (#114 by @pleonex)FileInfo
and DirectoryInfo
in nodes from the NodeFactory
(#128 by @Kaplas80)NodeFileContainer.MoveChildrenTo
for merging nodes instead of replacing (#130 by @Kaplas80)Breaking changes
Binary2Po
(#120 by @pleonex)Node.Transform
methods into Node.TransformTo
and Node.TransformWith
(#93 by @pleonex)Format
to new static class ConvertFormat
(#92 by @pleonex)Format
into an empty interface IFormat
(#92 by @pleonex)Node.Format
property is now getter-only. New method added Node.ChangeFormat
(#92 by @pleonex)DataStream
and BinaryFormat
constructors to DataStreamFactory
(#111 by @pleonex)BinaryFormat
does not create its own DataStream
, it will dispose the stream passed in the constructor (#111 by @pleonex)BinaryFormat
class to the Yarhl.IO
namespace (0450b98 by @pleonex)DataReader.ReadPadding
to SkipPadding
(#109 by @pleonex)Replacer.Transform
into TransformForward
and TransformBackward
(#101 by @pleonex)Bugs
DataReader.ReadString
(#137 by @pleonex)BadImageFormatException
(#125 by @Kaplas80)IFormat
(#103 by @pleonex)Other changes
net461
) for applications running in .NET Framework below 4.7.2 (d1588b9 by @pleonex)develop
(b0ca82e by @pleonex)New plugin discovery system and build system.
Special thanks to @priverop for the support, fixes and doc!
Infrastructure
Plugins
Features and bug fixes
First release with the new name Yahrl.
This is a rewrite of the old libgame library. It changes the way to work with Files (Node instead of GameFile), Format and conversions. It implements a new method of conversions, implementing new classes from IConverter<,>
instead of implementing hard-coded methods in the Format
class.
It also provides with converters for Po files and better ways to handle Streams and read / write binary and text files.
This release has been tested in many small programs to edit text, script and image files in game fan-translations.
First Stable Release
It features a full library ready to work with ROM Hacking project. This version has been used in modime for the Ninokuni NDS Spanish Translation.