Added scaffolding for ArrayAttribute specific conversion

This commit is contained in:
Samuele Lorefice
2025-03-11 19:18:41 +01:00
parent c30467acc5
commit 5b8158ea1a

View File

@@ -188,23 +188,15 @@ public class Reader {
case DNAFieldAttribute fieldAttribute:
value = ConvertNormalField(block, fieldAttribute, startOffset);
break;
case DNAArrayAttribute arrayAttribute:
value = ConvertArrayField(block, field, arrayAttribute, startOffset);
break;
case DNAListAttribute listAttribute:
value = ConvertListField(block, field, listAttribute, startOffset);
break;
default:
continue; //should never happen.
}
var type = field.FieldType;
var valType = value?.GetType();
if (valType != null && type != valType) {
if (type.IsArray && valType.IsArray) {
var array = (Array)value;
var newArray = Array.CreateInstance(type.GetElementType()!, array.Length);
Array.Copy(array, newArray, array.Length);
value = newArray;
}
}
field.SetValue(obj, value);
@@ -215,6 +207,10 @@ public class Reader {
objects.Add((block.MemAddr.ToPointer() + startOffset, obj!.GetType()), obj!);
}
private object? ConvertArrayField(FileBlock block, FieldInfo field, DNAArrayAttribute arrayAttribute, IntPtr startOffset) {
throw new NotImplementedException();
}
private void FillObject(IntPtr ptr, ref object? obj, FieldInfo[] fieldMetadata)
{
var block = GetBlock(ptr.ToInt64());