示例#1
0
        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);
        }
示例#2
0
 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)
     });
 }
示例#3
0
        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));
            }
        }