Added start offset param to the field conversion methods, started implementing list conversions
This commit is contained in:
@@ -162,10 +162,10 @@ public class Reader {
|
|||||||
var attrib = field.GetCustomAttribute<DNAAttribute>();
|
var attrib = field.GetCustomAttribute<DNAAttribute>();
|
||||||
switch (attrib) {
|
switch (attrib) {
|
||||||
case DNAFieldAttribute fieldAttribute:
|
case DNAFieldAttribute fieldAttribute:
|
||||||
value = ConvertNormalField(block, fieldAttribute);
|
value = ConvertNormalField(block, fieldAttribute, startOffset);
|
||||||
break;
|
break;
|
||||||
case DNAListAttribute listAttribute:
|
case DNAListAttribute listAttribute:
|
||||||
value = ConvertListField(block, field, listAttribute);
|
value = ConvertListField(block, field, listAttribute, startOffset);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
continue; //should never happen.
|
continue; //should never happen.
|
||||||
@@ -179,10 +179,10 @@ public class Reader {
|
|||||||
objects.Add((block.MemAddr.ToPointer() + startOffset, obj!.GetType()), obj!);
|
objects.Add((block.MemAddr.ToPointer() + startOffset, obj!.GetType()), obj!);
|
||||||
}
|
}
|
||||||
|
|
||||||
private object? ConvertNormalField(FileBlock block, DNAFieldAttribute attrib) {
|
private object? ConvertNormalField(FileBlock block, DNAFieldAttribute attrib, IntPtr startOffset) {
|
||||||
//Calculate the offset from where the data of the field starts.
|
//Calculate the offset from where the data of the field starts.
|
||||||
//Because the order of the fields is not guaranteed we need to compute it each time
|
//Because the order of the fields is not guaranteed we need to compute it each time
|
||||||
IntPtr offset = attrib.MemoryOffset;
|
IntPtr offset = attrib.MemoryOffset + startOffset;
|
||||||
|
|
||||||
//Grab data size, create a container and copy the data from the block to the container
|
//Grab data size, create a container and copy the data from the block to the container
|
||||||
int size = attrib.Size;
|
int size = attrib.Size;
|
||||||
@@ -219,8 +219,10 @@ public class Reader {
|
|||||||
throw new NotSupportedException($"Unknown type \"{attrib.OriginalType}\"");
|
throw new NotSupportedException($"Unknown type \"{attrib.OriginalType}\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
private object? ConvertListField(FileBlock block, FieldInfo field, DNAListAttribute attrib) {
|
private object? ConvertListField(FileBlock block, FieldInfo field, DNAListAttribute attrib, IntPtr startOffset) {
|
||||||
|
IntPtr offset = attrib.MemoryOffset + startOffset;
|
||||||
|
int size = Array.Copy((byte[])block.Body, startOffset+attrib.)
|
||||||
|
var data = new byte[]
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user