public static new StructType FromData(DataArray array) { var props = array.Array("props"); var propList = new List <PropertyDef>(); foreach (var p in props.Children) { var arr = p as DataArray; if (arr == null) { continue; } propList.Add(new PropertyDef { Name = arr.Any(0), Type = Type.FromData(arr) }); } var ret = new StructType { InternalType = DataType.Struct, Properties = propList.ToArray() }; if (array.Any(0) == "define") { TypeDefinitions[array.Any(1)] = ret; } return(ret); }
public static DrivenProp FromData(DataArray arr) { return(new DrivenProp { Unknown1 = arr.Int(0), Unknown2 = arr.Int(1), ClassName = arr.Any(2), Unknown3 = arr.Int(3), Unknown4 = arr.Int(4), PropertyName = arr.Any(5) }); }
public static Type FromData(DataArray n) { var type = n.Any(1); switch (type) { case "struct": return(StructType.FromData(n)); case "float": return(PrimitiveType.Float); case "int": return(PrimitiveType.Int); case "byte": return(PrimitiveType.Byte); case "uint": return(PrimitiveType.UInt); case "long": return(PrimitiveType.Long); case "bool": return(PrimitiveType.Bool); case "symbol": return(PrimitiveType.Symbol); case "string": return(PrimitiveType.ResourcePath); case "array": var eType = FromData(n.Array("item")); return(new ArrayType { ElementType = eType, InternalType = DataType.Array | eType.InternalType }); case "driven_prop": return(PrimitiveType.DrivenProp); default: if (TypeDefinitions.ContainsKey(type)) { return(TypeDefinitions[type]); } throw new Exception("Unknown type " + n.Any(1)); } }