public static object Load(Package package, BinaryReader reader, object current)
{
var info = new FieldInfo(reader);
var u25 = new FieldInfo(0x25);
if (info.Type == FieldTypeBase.Boolean)
{
return(info.IsArray);
}
if (info.IsArray)
{
switch (info.Type)
{
case FieldTypeBase.Str:
return(LoadArrayElement(current, () => reader.ReadStringz(reader.ReadByte(), Encoding.ASCII)));
case FieldTypeBase.Integer:
return(LoadArrayElement(current, reader.ReadInt32));
case FieldTypeBase.Object:
return(LoadArrayElement(current, () => package.ReadReference(reader)));
case FieldTypeBase.Struct:
return(LoadArrayElement(current, () => LoadSingle(package, reader, info)));
default:
throw new NotImplementedException(info.Type + " does not have an implementation for loading arrays (index " + info.ArrayIndex + ", size " + info.Size + ")");
}
}
else
{
return(LoadSingle(package, reader, info));
}
}