first commit

This commit is contained in:
2025-07-06 00:23:46 +02:00
commit 38f50c8819
1788 changed files with 112878 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
namespace AddressablesTools.Catalog
{
internal static class SerializedObjectDecoder
{
internal enum ObjectType
{
AsciiString,
UnicodeString,
UInt16,
UInt32,
Int32,
Hash128,
Type,
JsonObject
}
internal static object Decode(BinaryReader br)
{
ObjectType type = (ObjectType)br.ReadByte();
switch (type)
{
case ObjectType.AsciiString:
{
string str = ReadString4(br);
return str;
}
case ObjectType.UnicodeString:
{
string str = ReadString4Unicode(br);
return str;
}
case ObjectType.UInt16:
{
return br.ReadUInt16();
}
case ObjectType.UInt32:
{
return br.ReadUInt32();
}
case ObjectType.Int32:
{
return br.ReadInt32();
}
case ObjectType.Hash128:
{
// read as string for now
string str = ReadString1(br);
return str;
}
case ObjectType.Type:
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
throw new NotSupportedException($"{nameof(ObjectType)}.{nameof(ObjectType.Type)} is only supported on windows because it uses {nameof(Type.GetTypeFromCLSID)}");
}
string str = ReadString1(br);
return Type.GetTypeFromCLSID(new Guid(str));
}
case ObjectType.JsonObject:
{
string assemblyName = ReadString1(br);
string className = ReadString1(br);
string jsonText = ReadString4Unicode(br);
ClassJsonObject jsonObj = new ClassJsonObject(assemblyName, className, jsonText);
return jsonObj;
}
default:
{
return null;
}
}
}
private static string ReadString1(BinaryReader br)
{
int length = br.ReadByte();
string str = Encoding.ASCII.GetString(br.ReadBytes(length));
return str;
}
private static string ReadString4(BinaryReader br)
{
int length = br.ReadInt32();
string str = Encoding.ASCII.GetString(br.ReadBytes(length));
return str;
}
private static string ReadString4Unicode(BinaryReader br)
{
int length = br.ReadInt32();
string str = Encoding.Unicode.GetString(br.ReadBytes(length));
return str;
}
}
}