private static PropertyInfo getProperty(ME1Package pcc, IExportEntry entry)
{
PropertyInfo p = new PropertyInfo();
switch (entry.ClassName)
{
case "IntProperty":
p.type = PropertyType.IntProperty;
break;
case "StringRefProperty":
p.type = PropertyType.StringRefProperty;
break;
case "FloatProperty":
p.type = PropertyType.FloatProperty;
break;
case "BoolProperty":
p.type = PropertyType.BoolProperty;
break;
case "StrProperty":
p.type = PropertyType.StrProperty;
break;
case "NameProperty":
p.type = PropertyType.NameProperty;
break;
case "DelegateProperty":
p.type = PropertyType.DelegateProperty;
break;
case "ObjectProperty":
p.type = PropertyType.ObjectProperty;
p.reference = pcc.getObjectName(BitConverter.ToInt32(entry.Data, entry.Data.Length - 4));
break;
case "StructProperty":
p.type = PropertyType.StructProperty;
p.reference = pcc.getObjectName(BitConverter.ToInt32(entry.Data, entry.Data.Length - 4));
break;
case "BioMask4Property":
case "ByteProperty":
p.type = PropertyType.ByteProperty;
p.reference = pcc.getObjectName(BitConverter.ToInt32(entry.Data, entry.Data.Length - 4));
break;
case "ArrayProperty":
p.type = PropertyType.ArrayProperty;
PropertyInfo arrayTypeProp = getProperty(pcc, pcc.Exports[BitConverter.ToInt32(entry.Data, 44) - 1]);
if (arrayTypeProp != null)
{
switch (arrayTypeProp.type)
{
case PropertyType.ObjectProperty:
case PropertyType.StructProperty:
case PropertyType.ArrayProperty:
p.reference = arrayTypeProp.reference;
break;
case PropertyType.ByteProperty:
if (arrayTypeProp.reference == "")
p.reference = arrayTypeProp.type.ToString();
else
p.reference = arrayTypeProp.reference;
break;
case PropertyType.IntProperty:
case PropertyType.FloatProperty:
case PropertyType.NameProperty:
case PropertyType.BoolProperty:
case PropertyType.StrProperty:
case PropertyType.StringRefProperty:
case PropertyType.DelegateProperty:
p.reference = arrayTypeProp.type.ToString();
break;
case PropertyType.None:
case PropertyType.Unknown:
default:
System.Diagnostics.Debugger.Break();
p = null;
break;
}
}
else
{
p = null;
}
break;
case "ClassProperty":
case "InterfaceProperty":
case "ComponentProperty":
default:
p = null;
break;
}
return p;
}