Skip to content

Refactor MetaStream, ContainerStream and GameProfile, reorganize some namespaces#23

Open
iMrShadow wants to merge 23 commits into
mainfrom
refactor/metastream-rework
Open

Refactor MetaStream, ContainerStream and GameProfile, reorganize some namespaces#23
iMrShadow wants to merge 23 commits into
mainfrom
refactor/metastream-rework

Conversation

@iMrShadow
Copy link
Copy Markdown
Owner

This PR refactors the MetaStream API, improves internal structure and adds documentation.

MetaStream

  • Added OpenWrite and OpenRead static functions.
  • Added support for encrypted meta stream files with LegacyEncryptedStream which matches with Telltale Tool. This requires a workspace. The user also has the option to encrypt/decrypt using the LegacyEncryption class provided with a Blowfish key and an archive version.
  • Added experimental support for compressed meta stream resources.
  • Renamed the following MetaStream implementations: MetaStreamReader/MetaStreamWriter to BinaryMetaStreamReader/BinaryMetaStreamWriter.
  • Added a Header section to match Telltale Tool.
  • Renamed some fields and methods.
  • Added an abstract Close method.
  • Reworked Serialize function to automatically preserialize.
  • Made reading and writing processes more robust.
  • Removed PreSerialize.

MetaStreamParams

  • Renamed MetaStreamConfig to MetaStreamParams.
  • Replaced SerializedClasses, UnregisteredClasses and UnregisteredTypes with getter methods rather than storing them.
  • Added VersionInfo array which holds all original class information which matches Telltale Tool.
  • Added IsCompiledVersion. Currently it's unused, but in the future it should check if all classes are registered within the workspace.
  • Added StreamVersion field that matches Telltale Tool and it's more flexible.
  • Added Encrypt and Compress fields.
  • Removed redundant Version.

ContainerStream

  • Added ContainerStreamParams.
  • Removed dependencies with archive-related classes.

Toolkit

  • Add Workspace parameter in deserialize methods,

Blowfish

  • Added a constructor with a boolean argument.
  • Fixed encryption.

GameProfile

  • Added StreamVersion to match MetaStreamParams.
  • Removed redundant MetaStreamVersion.
  • Removed AreSymbolsHashed as symbols are always hashed. VersionInfo now knows when it is hashed.

VersionInfo

  • Implemented helper methods.

MetaClassRegistry

  • Exposed GetClass(ulong, uint) method.

Miscellaneous

  • Bumped version to 0.3.0.
  • Fixed a regression that did not allow files being copied to the output folder. Nuget is unaffected.
  • Removed a csproj folder.
  • Updated database files with the new changes.

iMrShadow added 23 commits May 31, 2026 16:47
@iMrShadow iMrShadow added bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request database This issue or pull request is related to the database labels May 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working database This issue or pull request is related to the database documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant