Example #1
0
        private void WriteDeserializationCode(XmlClassMember member, DatabaseSchema schema)
        {
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;
            //if (member.options.Contains(Constants.OptionObsolete)) memberName = PrivateMemberName(memberName);
            var notnull = member.options.Contains(Constants.OptionNotNull);

            if (member.type == Constants.TypeObject)
            {
                var dataClass = schema.GetObject(member.typeid);
                WriteLine(memberName + " = database." + Utils.ObjectIdGetterName(member.typeid) + "(serializable." + member.name + ");");
                if (notnull)
                {
                    WriteLine("if (" + memberName + ".IsNull)");
                    WriteLine("    throw new DatabaseException(this.GetType().Name + \"." + memberName + " cannot be null\");");
                }
            }
            else if (member.type == Constants.TypeObjectList)
            {
                var dataClass = schema.GetObject(member.typeid);
                WriteLine(memberName + " = serializable." + member.name + "?.Select(id => new Wrapper<" +
                          Utils.DataClassName(dataClass) + "> { Item = database." + Utils.ObjectIdGetterName(member.typeid) + "(id) }).ToArray();");
            }
            else if (member.type == Constants.TypeStruct)
            {
                var dataClass = schema.GetStruct(member.typeid);
                WriteLine(memberName + " = new " + Utils.DataClassName(dataClass) + "(serializable." + member.name + ", database);");
            }
            else if (member.type == Constants.TypeStructList)
            {
                var dataClass = schema.GetStruct(member.typeid);
                WriteLine(memberName + " = serializable." + member.name + "?.Select(item => new " +
                          Utils.DataClassName(dataClass) + "(item, database)).ToArray();");
            }
            else if (member.type == Constants.TypeEnumFlags)
            {
                WriteLine(memberName + " = serializable." + member.name + "?.Select(item => new ValueWrapper<" + member.typeid + "> { Value = item }).ToArray();");
            }
            else if (member.type == Constants.TypeInt)
            {
                member.MinMaxInt(out var minvalue, out var maxvalue);
                WriteLine(memberName + " = new NumericValue<int>(serializable." + member.name + ", " + minvalue + ", " + maxvalue + ");");
            }
            else if (member.type == Constants.TypeFloat)
            {
                member.MinMaxFloat(out var minvalue, out var maxvalue);
                WriteLine(memberName + " = new NumericValue<float>(serializable." + member.name + ", " + minvalue + "f, " + maxvalue + "f);");
            }
            else if (member.type == Constants.TypeColor)
            {
                WriteLine(memberName + " = Helpers.ColorFromString(serializable." + member.name + ");");
            }
            else if (member.type == Constants.TypeLayout)
            {
                WriteLine(memberName + " = new Layout(serializable." + member.name + ");");
            }
            else
            {
                WriteLine(memberName + " = serializable." + member.name + ";");
            }
        }
Example #2
0
        // TODO: delete this method
        private void WriteLegacyStructMember(XmlClassMember member, DatabaseSchema schema)
        {
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;
            var prefix     = "public ";
            var suffix     = ";";

            WriteDataClassMember(memberName, prefix, suffix, member, schema);
        }
Example #3
0
        private void WriteDeserializationCode(XmlClassMember member, DatabaseSchema schema)
        {
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;

            if (member.options.Contains(Constants.OptionObsolete))
            {
                memberName = PrivateMemberName(memberName);
            }
            WriteDeserializationCode(memberName, member, schema);
        }
Example #4
0
 public static void MinMaxInt(this XmlClassMember member, out int minvalue, out int maxvalue)
 {
     if (string.IsNullOrEmpty(member.minvalue) || !int.TryParse(member.minvalue, out minvalue))
     {
         minvalue = int.MinValue;
     }
     if (string.IsNullOrEmpty(member.maxvalue) || !int.TryParse(member.maxvalue, out maxvalue))
     {
         maxvalue = int.MaxValue;
     }
 }
Example #5
0
 private static void MinMaxFloat(XmlClassMember member, out float minvalue, out float maxvalue)
 {
     if (string.IsNullOrEmpty(member.minvalue) || !float.TryParse(member.minvalue, out minvalue))
     {
         minvalue = int.MinValue;
     }
     if (string.IsNullOrEmpty(member.maxvalue) || !float.TryParse(member.maxvalue, out maxvalue))
     {
         maxvalue = int.MaxValue;
     }
 }
Example #6
0
        public static void WriteDeserializationCode(XmlClassMember member, CodeFormatter code, GeneratorSettings settings)
        {
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;

            if (member.type == Constants.TypeObject)
            {
                code.Add(memberName, " = database.", DatabaseGetIdMethod(member.typeid), "(serializable.", member.name, ");");
            }
            else if (member.type == Constants.TypeObjectList)
            {
                code.Add(memberName, " = ", "serializable.", member.name, "?.Select(item => new Wrapper<", DataClass(member.typeid),
                         "> { Item = database.", DatabaseGetIdMethod(member.typeid), "(item) }).ToArray();");
            }
            else if (member.type == Constants.TypeStruct)
            {
                code.Add(memberName, " = ", DataClass(member.typeid), ".", settings.DeserializeMethod, "(serializable.", member.name, ", database);");
            }
            else if (member.type == Constants.TypeStructList)
            {
                code.Add(memberName, " = ", "serializable.", member.name, "?.Select(item => ", DataClass(member.typeid), ".", settings.DeserializeMethod, "(item, database)).ToArray();");
            }
            else if (member.type == Constants.TypeInt)
            {
                MinMaxInt(member, out var minvalue, out var maxvalue);
                code.Add(memberName, " = new NumericValue<int>(serializable.", member.name, ", ", minvalue.ToString(), ", ", maxvalue.ToString(), ");");
            }
            else if (member.type == Constants.TypeFloat)
            {
                MinMaxFloat(member, out var minvalue, out var maxvalue);
                code.Add(memberName, " = new NumericValue<float>(serializable.", member.name, ", ", minvalue.ToString(), "f, ", maxvalue.ToString(), "f);");
            }
            else if (member.type == Constants.TypeColor)
            {
                code.Add(memberName, " = Utils.ColorUtils.ColorFromString(serializable.", member.name, ");");
            }
            else if (member.type == Constants.TypeLayout)
            {
                code.Add(memberName, " = new Layout(serializable.", member.name, ");");
            }
            else if (member.type == Constants.TypeAudioClip)
            {
                code.Add(memberName, " = new AudioClipId(serializable.", member.name, ");");
            }
            else if (member.type == Constants.TypeImage)
            {
                code.Add(memberName, " = new SpriteId(serializable.", member.name, ");");
            }
            else
            {
                code.Add(memberName, " = serializable.", member.name, ";");
            }
        }
Example #7
0
        private void WriteDataClassMember(XmlClassMember member, DatabaseSchema schema)
        {
            var obsolete   = member.options.Contains(Constants.OptionObsolete);
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;

            if (obsolete)
            {
                memberName = PrivateMemberName(memberName);
            }
            var prefix = obsolete ? "private readonly " : "public ";
            var suffix = obsolete ? ";" : " { get; private set; }";

            WriteDataClassMember(memberName, prefix, suffix, member, schema);
        }
Example #8
0
        public static void WriteSerializationCode(XmlClassMember member, CodeFormatter code)
        {
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;

            if (member.type == Constants.TypeInt || member.type == Constants.TypeFloat)
            {
                code.Add("serializable.", member.name, " = ", memberName, ".Value;");
            }
            else if (member.type == Constants.TypeObject)
            {
                code.Add("serializable.", member.name, " = ", memberName, ".Id;");
            }
            else if (member.type == Constants.TypeObjectList)
            {
                code.Add("serializable.", member.name, " = ", memberName, "?.Select(item => item.Item.Id).ToArray();");
            }
            else if (member.type == Constants.TypeStruct)
            {
                code.Add("serializable.", member.name, " = ", memberName, ".Serialize();");
            }
            else if (member.type == Constants.TypeStructList)
            {
                code.Add("serializable.", member.name, " = ", memberName, "?.Select(item => item.Serialize()).ToArray();");
            }
            else if (member.type == Constants.TypeColor)
            {
                code.Add("serializable.", member.name, " = ", "Utils.ColorUtils.ColorToString(", memberName, ");");
            }
            else if (member.type == Constants.TypeLayout)
            {
                code.Add("serializable.", member.name, " = ", memberName, ".Data;");
            }
            else if (member.type == Constants.TypeAudioClip)
            {
                code.Add("serializable.", member.name, " = ", memberName, ".ToString();");
            }
            else if (member.type == Constants.TypeImage)
            {
                code.Add("serializable.", member.name, " = ", memberName, ".ToString();");
            }
            else
            {
                code.Add("serializable.", member.name, " = ", memberName, ";");
            }
        }
Example #9
0
        private string GetSerializableDefaultValue(XmlClassMember member, DatabaseSchema schema)
        {
            switch (member.type)
            {
            case Constants.TypeInt:
            case Constants.TypeEnum:
            case Constants.TypeObject:
                return("0");

            case Constants.TypeFloat:
                return("0f");

            case Constants.TypeBool:
                return("false");

            case Constants.TypeString:
            case Constants.TypeColor:
            case Constants.TypeImage:
            case Constants.TypeAudioClip:
            case Constants.TypePrefab:
            case Constants.TypeLayout:
                return("string.Empty");

            case Constants.TypeVector:
                return("Vector2.Zero");

            case Constants.TypeObjectList:
            case Constants.TypeStructList:
            case Constants.TypeEnumFlags:
                return("null");

            case Constants.TypeStruct:
                return("new " + Utils.SerializableClassName(member.typeid) + "()");

            default:
                throw new InvalidSchemaException("Invalid class member type - " + member.type);
            }
        }
Example #10
0
        private void WriteDataClassMember(XmlClassMember member, DatabaseSchema schema)
        {
            //var obsolete = member.options.Contains(Constants.OptionObsolete);
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;
            //if (obsolete) memberName = PrivateMemberName(memberName);
            var prefix = "public ";       //obsolete ? "private readonly " : "public ";
            var suffix = ";";             //obsolete ? ";" : " { get; private set; }";

            if (member.type == Constants.TypeInt)
            {
                member.MinMaxInt(out var minvalue, out var maxvalue);
                WriteLine(prefix + "NumericValue<int> " + memberName + " = new NumericValue<int>(0, " + minvalue + ", " + maxvalue + ");");
            }
            else if (member.type == Constants.TypeFloat)
            {
                member.MinMaxFloat(out var minvalue, out var maxvalue);
                WriteLine(prefix + "NumericValue<float> " + memberName + " = new NumericValue<float>(0, " + minvalue + "f, " + maxvalue + "f);");
            }
            else if (member.type == Constants.TypeBool)
            {
                WriteLine(prefix + "bool " + memberName + suffix);
            }
            else if (member.type == Constants.TypeString)
            {
                WriteLine(prefix + "string " + memberName + suffix);
            }
            else if (member.type == Constants.TypeColor)
            {
                WriteLine(prefix + "System.Drawing.Color " + memberName + suffix);
            }
            else if (member.type == Constants.TypeImage)
            {
                WriteLine(prefix + "string " + memberName + suffix);
            }
            else if (member.type == Constants.TypeAudioClip)
            {
                WriteLine(prefix + "string " + memberName + suffix);
            }
            else if (member.type == Constants.TypePrefab)
            {
                WriteLine(prefix + "string " + memberName + suffix);
            }
            else if (member.type == Constants.TypeLayout)
            {
                WriteLine(prefix + "Layout " + memberName + suffix);
            }
            else if (member.type == Constants.TypeVector)
            {
                WriteLine(prefix + "Vector2 " + memberName + suffix);
            }
            else if (member.type == Constants.TypeEnum)
            {
                if (!schema.HasEnum(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown enum type in class member " + member.name);
                }

                WriteLine(prefix + member.typeid + " " + memberName + suffix);
            }
            else if (member.type == Constants.TypeObject)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                var dataClass = schema.GetObject(member.typeid);
                WriteLine(prefix + "ItemId<" + Utils.DataClassName(dataClass) + "> " + memberName + " = ItemId<" + Utils.DataClassName(dataClass) + ">.Empty" + suffix);
            }
            else if (member.type == Constants.TypeObjectList)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                var dataClass = schema.GetObject(member.typeid);

                WriteLine(prefix + "Wrapper<" + Utils.DataClassName(dataClass) + ">[] " + memberName + suffix);
            }
            else if (member.type == Constants.TypeStruct)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                var dataClass = schema.GetStruct(member.typeid);
                WriteLine(prefix + Utils.DataClassName(dataClass) + " " + memberName + " = new " + Utils.DataClassName(dataClass) + "()" + suffix);
            }
            else if (member.type == Constants.TypeStructList)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                var dataClass = schema.GetStruct(member.typeid);

                WriteLine(prefix + Utils.DataClassName(dataClass) + "[] " + memberName + suffix);
            }
            else if (member.type == Constants.TypeEnumFlags)
            {
                if (!schema.HasEnum(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown enum type in class member " + member.name);
                }

                WriteLine(prefix + "ValueWrapper<" + member.typeid + ">[] " + memberName + suffix);
            }
            else
            {
                throw new InvalidSchemaException("Invalid class member type - " + member.type);
            }
        }
Example #11
0
        private void WriteSerializableClassMember(XmlClassMember member, DatabaseSchema schema)
        {
            if (member.type == Constants.TypeInt)
            {
                WriteLine("public int " + member.name + ";");
            }
            else if (member.type == Constants.TypeFloat)
            {
                WriteLine("public float " + member.name + ";");
            }
            else if (member.type == Constants.TypeBool)
            {
                WriteLine("public bool " + member.name + ";");
            }
            else if (member.type == Constants.TypeString)
            {
                WriteLine("[DefaultValue(\"\")]");
                WriteLine("public string " + member.name + ";");
            }
            else if (member.type == Constants.TypeColor)
            {
                WriteLine("[DefaultValue(\"\")]");
                WriteLine("public string " + member.name + ";");
            }
            else if (member.type == Constants.TypeImage)
            {
                WriteLine("[DefaultValue(\"\")]");
                WriteLine("public string " + member.name + ";");
            }
            else if (member.type == Constants.TypeAudioClip)
            {
                WriteLine("[DefaultValue(\"\")]");
                WriteLine("public string " + member.name + ";");
            }
            else if (member.type == Constants.TypePrefab)
            {
                WriteLine("[DefaultValue(\"\")]");
                WriteLine("public string " + member.name + ";");
            }
            else if (member.type == Constants.TypeLayout)
            {
                WriteLine("[DefaultValue(\"\")]");
                WriteLine("public string " + member.name + ";");
            }
            else if (member.type == Constants.TypeVector)
            {
                WriteLine("public Vector2 " + member.name + ";");
            }
            else if (member.type == Constants.TypeEnum)
            {
                if (!schema.HasEnum(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown enum type in class member " + member.name);
                }

                WriteLine("public " + member.typeid + " " + member.name + ";");
            }
            else if (member.type == Constants.TypeObject)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                WriteLine("public int " + member.name + ";");
            }
            else if (member.type == Constants.TypeObjectList)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                WriteLine("public int[] " + member.name + ";");
            }
            else if (member.type == Constants.TypeStruct)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                WriteLine("public " + Utils.SerializableClassName(member.typeid) + " " + member.name + ";");
            }
            else if (member.type == Constants.TypeStructList)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                WriteLine("public " + Utils.SerializableClassName(member.typeid) + "[] " + member.name + ";");
            }
            else if (member.type == Constants.TypeEnumFlags)
            {
                if (!schema.HasEnum(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown enum type in class member " + member.name);
                }

                WriteLine("public " + member.typeid + "[] " + member.name + ";");
            }
            else
            {
                throw new InvalidSchemaException("Invalid class member type - " + member.type);
            }
        }
Example #12
0
        private void WriteDeserializationCode(string memberName, XmlClassMember member, DatabaseSchema schema)
        {
            var notnull = member.options.Contains(Constants.OptionNotNull);

            if (member.type == Constants.TypeObject)
            {
                var dataClass = schema.GetObject(member.typeid);
                WriteLine(memberName + " = loader." + Utils.ObjectGetterName(member.typeid) + "(new ItemId<" + Utils.DataClassName(dataClass) + ">(serializable." + member.name + "));");
                if (notnull)
                {
                    WriteLine("if (" + memberName + " == null)");
                    WriteLine("    throw new DatabaseException(this.GetType().Name + \"." + memberName + " cannot be null - \" + serializable." + member.name + ");");
                }
            }
            else if (member.type == Constants.TypeObjectList)
            {
                var dataClass = schema.GetObject(member.typeid);
                WriteLine(memberName + " = new ImmutableCollection<" + Utils.DataClassName(dataClass) + ">(" + "serializable." + member.name +
                          "?.Select(item => loader." + Utils.ObjectGetterName(member.typeid) + "(new ItemId<" + Utils.DataClassName(dataClass) + ">(item), true)));");
            }
            else if (member.type == Constants.TypeStruct)
            {
                var dataClass = schema.GetStruct(member.typeid);
                WriteLine(memberName + " = " + Utils.DataClassName(dataClass) + "." + Utils.FactoryMethodName + "(serializable." + member.name + ", loader);");
            }
            else if (member.type == Constants.TypeStructList)
            {
                var dataClass = schema.GetStruct(member.typeid);
                WriteLine(memberName + " = new ImmutableCollection<" + Utils.DataClassName(dataClass) + ">(" + "serializable." + member.name +
                          "?.Select(item => " + Utils.DataClassName(dataClass) + "." + Utils.FactoryMethodName + "(item, loader)));");
            }
            else if (member.type == Constants.TypeEnumFlags)
            {
                WriteLine(memberName + " = new ImmutableSet<" + member.typeid + ">(" + "serializable." + member.name + ");");
            }
            else if (member.type == Constants.TypeInt)
            {
                member.MinMaxInt(out var minvalue, out var maxvalue);
                WriteLine(memberName + " = UnityEngine.Mathf.Clamp(serializable." + member.name + ", " + minvalue + ", " + maxvalue + ");");
            }
            else if (member.type == Constants.TypeFloat)
            {
                member.MinMaxFloat(out var minvalue, out var maxvalue);
                WriteLine(memberName + " = UnityEngine.Mathf.Clamp(serializable." + member.name + ", " + minvalue + "f, " + maxvalue + "f);");
            }
            else if (member.type == Constants.TypeColor)
            {
                WriteLine(memberName + " = new ColorData(serializable." + member.name + ");");
            }
            else if (member.type == Constants.TypeLayout)
            {
                WriteLine(memberName + " = new Layout(serializable." + member.name + ");");
            }
            else if (member.type == Constants.TypeAudioClip)
            {
                WriteLine(memberName + " = new AudioClipId(serializable." + member.name + ");");
            }
            else if (member.type == Constants.TypeImage)
            {
                WriteLine(memberName + " = new SpriteId(serializable." + member.name + ", SpriteId.Type." + member.typeid + ");");
            }
            else if (member.type == Constants.TypePrefab)
            {
                WriteLine(memberName + " = new PrefabId(serializable." + member.name + ", PrefabId.Type." + member.typeid + ");");
            }
            else
            {
                WriteLine(memberName + " = serializable." + member.name + ";");
            }
        }
Example #13
0
        // TODO: delete this method
        private void WriteLegacyDeserializationCode(XmlClassMember member, DatabaseSchema schema)
        {
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;

            WriteDeserializationCode(memberName, member, schema);
        }
Example #14
0
        public static void WriteDataMember(XmlClassMember member, CodeFormatter code, DatabaseSchema schema)
        {
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;

            if (member.type == Constants.TypeInt)
            {
                MinMaxInt(member, out var minvalue, out var maxvalue);
                code.Add("public NumericValue<int> ", memberName, " = new NumericValue<int>(0,", minvalue.ToString(), ",", maxvalue.ToString(), ");");
            }
            else if (member.type == Constants.TypeFloat)
            {
                MinMaxFloat(member, out var minvalue, out var maxvalue);
                code.Add("public NumericValue<float> ", memberName, " = new NumericValue<float>(0,", minvalue.ToString(), "f,", maxvalue.ToString(), "f);");
            }
            else if (member.type == Constants.TypeBool)
            {
                code.Add("public bool ", memberName, ";");
            }
            else if (member.type == Constants.TypeString)
            {
                code.Add("public string ", memberName, ";");
            }
            else if (member.type == Constants.TypeColor)
            {
                code.Add("public UnityEngine.Color ", memberName, ";");
            }
            else if (member.type == Constants.TypeImage)
            {
                code.Add("public SpriteId ", memberName, ";");
            }
            else if (member.type == Constants.TypeAudioClip)
            {
                code.Add("public AudioClipId ", memberName, ";");
            }
            else if (member.type == Constants.TypeLayout)
            {
                code.Add("public Layout ", memberName, ";");
            }
            else if (member.type == Constants.TypeVector)
            {
                code.Add("public Vector ", memberName, " = Vector.Zero;");
            }
            else if (member.type == Constants.TypeEnum)
            {
                if (!schema.HasEnum(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown enum type in class member " + member.name);
                }

                code.Add("public ", member.typeid, " ", memberName, ";");
            }
            else if (member.type == Constants.TypeObject)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                code.Add("public ItemId<", DataClass(member.typeid), "> ", memberName, " = ItemId<", DataClass(member.typeid), ">.Empty;");
            }
            else if (member.type == Constants.TypeObjectList)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                code.Add("public Wrapper<", DataClass(member.typeid), ">[] ", memberName, ";");
            }
            else if (member.type == Constants.TypeStruct)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                code.Add("public ", DataClass(member.typeid), " ", memberName, ";");
            }
            else if (member.type == Constants.TypeStructList)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                code.Add("public ", DataClass(member.typeid), "[] ", memberName, ";");
            }
            else
            {
                throw new InvalidSchemaException("Invalid class member type - " + member.type);
            }
        }
Example #15
0
        private void WriteSerializationCode(XmlClassMember member, DatabaseSchema schema)
        {
            var memberName = !string.IsNullOrEmpty(member.alias) ? member.alias : member.name;
            //if (member.options.Contains(Constants.OptionObsolete)) memberName = PrivateMemberName(memberName);
            var notnull = member.options.Contains(Constants.OptionNotNull);

            if (member.type == Constants.TypeObject)
            {
                var dataClass = schema.GetObject(member.typeid);
                WriteLine("serializable." + member.name + " = " + memberName + ".Value;");
                //TODO: if (notnull)
            }
            else if (member.type == Constants.TypeObjectList)
            {
                var dataClass = schema.GetObject(member.typeid);
                WriteLine("if (" + memberName + " == null || " + memberName + ".Length == 0)");
                WriteLine("    serializable." + member.name + " = null;");
                WriteLine("else");
                WriteLine("    serializable." + member.name + " = " + memberName + ".Select(wrapper => wrapper.Item.Value).ToArray();");
            }
            else if (member.type == Constants.TypeStruct)
            {
                var dataClass = schema.GetStruct(member.typeid);
                WriteLine("serializable." + member.name + " = " + memberName + "." + Utils.StructSerializationMethodName + "();");
            }
            else if (member.type == Constants.TypeStructList)
            {
                var dataClass = schema.GetStruct(member.typeid);
                WriteLine("if (" + memberName + " == null || " + memberName + ".Length == 0)");
                WriteLine("    serializable." + member.name + " = null;");
                WriteLine("else");
                WriteLine("    serializable." + member.name + " = " + memberName + ".Select(item => item." +
                          Utils.StructSerializationMethodName + "()).ToArray();");
            }
            else if (member.type == Constants.TypeEnumFlags)
            {
                WriteLine("if (" + memberName + " == null || " + memberName + ".Length == 0)");
                WriteLine("    serializable." + member.name + " = null;");
                WriteLine("else");
                WriteLine("    serializable." + member.name + " = " + memberName + ".Select(item => item.Value).ToArray();");
            }
            else if (member.type == Constants.TypeInt)
            {
                WriteLine("serializable." + member.name + " = " + memberName + ".Value;");
            }
            else if (member.type == Constants.TypeFloat)
            {
                WriteLine("serializable." + member.name + " = " + memberName + ".Value;");
            }
            else if (member.type == Constants.TypeColor)
            {
                WriteLine("serializable." + member.name + " = Helpers.ColorToString(" + memberName + ");");
            }
            else if (member.type == Constants.TypeLayout)
            {
                WriteLine("serializable." + member.name + " = " + memberName + ".Data;");
            }
            else
            {
                WriteLine("serializable." + member.name + " = " + memberName + ";");
            }
        }
Example #16
0
        private void WriteDataClassMember(string memberName, string prefix, string suffix, XmlClassMember member, DatabaseSchema schema)
        {
            if (member.type == Constants.TypeInt)
            {
                WriteLine(prefix + "int " + memberName + suffix);
            }
            else if (member.type == Constants.TypeFloat)
            {
                WriteLine(prefix + "float " + memberName + suffix);
            }
            else if (member.type == Constants.TypeBool)
            {
                WriteLine(prefix + "bool " + memberName + suffix);
            }
            else if (member.type == Constants.TypeString)
            {
                WriteLine(prefix + "string " + memberName + suffix);
            }
            else if (member.type == Constants.TypeColor)
            {
                WriteLine(prefix + "ColorData " + memberName + suffix);
            }
            else if (member.type == Constants.TypeImage)
            {
                WriteLine(prefix + "SpriteId " + memberName + suffix);
            }
            else if (member.type == Constants.TypeAudioClip)
            {
                WriteLine(prefix + "AudioClipId " + memberName + suffix);
            }
            else if (member.type == Constants.TypePrefab)
            {
                WriteLine(prefix + "PrefabId " + memberName + suffix);
            }
            else if (member.type == Constants.TypeLayout)
            {
                WriteLine(prefix + "Layout " + memberName + suffix);
            }
            else if (member.type == Constants.TypeVector)
            {
                WriteLine(prefix + "UnityEngine.Vector2 " + memberName + suffix);
            }
            else if (member.type == Constants.TypeEnum)
            {
                if (!schema.HasEnum(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown enum type in class member " + member.name);
                }

                WriteLine(prefix + member.typeid + " " + memberName + suffix);
            }
            else if (member.type == Constants.TypeObject)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                var dataClass = schema.GetObject(member.typeid);
                WriteLine(prefix + Utils.DataClassName(dataClass) + " " + memberName + suffix);
            }
            else if (member.type == Constants.TypeObjectList)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                var dataClass = schema.GetObject(member.typeid);

                WriteLine(prefix + "ImmutableCollection<" + Utils.DataClassName(dataClass) + "> " + memberName + suffix);
            }
            else if (member.type == Constants.TypeStruct)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                var dataClass = schema.GetStruct(member.typeid);
                WriteLine(prefix + Utils.DataClassName(dataClass) + " " + memberName + suffix);
            }
            else if (member.type == Constants.TypeStructList)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                var dataClass = schema.GetStruct(member.typeid);

                WriteLine(prefix + "ImmutableCollection<" + Utils.DataClassName(dataClass) + "> " + memberName + suffix);
            }
            else if (member.type == Constants.TypeEnumFlags)
            {
                if (!schema.HasEnum(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown enum type in class member " + member.name);
                }

                WriteLine(prefix + "ImmutableSet<" + member.typeid + "> " + memberName + suffix);
            }
            else
            {
                throw new InvalidSchemaException("Invalid class member type - " + member.type);
            }
        }
Example #17
0
        public static void WriteSerializableMember(XmlClassMember member, CodeFormatter code, DatabaseSchema schema)
        {
            if (member.type == Constants.TypeInt)
            {
                code.Add("public int ", member.name, ";");
            }
            else if (member.type == Constants.TypeFloat)
            {
                code.Add("public float ", member.name, ";");
            }
            else if (member.type == Constants.TypeBool)
            {
                code.Add("public bool ", member.name, ";");
            }
            else if (member.type == Constants.TypeString)
            {
                code.Add(DefaultStringValue);
                code.Add("public string ", member.name, ";");
            }
            else if (member.type == Constants.TypeColor)
            {
                code.Add(DefaultStringValue);
                code.Add("public string ", member.name, ";");
            }
            else if (member.type == Constants.TypeImage)
            {
                code.Add(DefaultStringValue);
                code.Add("public string ", member.name, ";");
            }
            else if (member.type == Constants.TypeAudioClip)
            {
                code.Add(DefaultStringValue);
                code.Add("public string ", member.name, ";");
            }
            else if (member.type == Constants.TypeLayout)
            {
                code.Add(DefaultStringValue);
                code.Add("public string ", member.name, ";");
            }
            else if (member.type == Constants.TypeVector)
            {
                code.Add("public Vector ", member.name, ";");
            }
            else if (member.type == Constants.TypeEnum)
            {
                if (!schema.HasEnum(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown enum type in class member " + member.name);
                }

                code.Add("public ", member.typeid, " ", member.name, ";");
            }
            else if (member.type == Constants.TypeObject)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                code.Add("public int ", member.name, ";");
            }
            else if (member.type == Constants.TypeObjectList)
            {
                if (!schema.HasObject(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown object type in class member " + member.name);
                }

                code.Add("public int[] ", member.name, ";");
            }
            else if (member.type == Constants.TypeStruct)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                code.Add("public ", SerializableClass(member.typeid), " ", member.name, ";");
            }
            else if (member.type == Constants.TypeStructList)
            {
                if (!schema.HasStruct(member.typeid))
                {
                    throw new InvalidSchemaException("Unknown struct type in class member " + member.name);
                }

                code.Add("public ", SerializableClass(member.typeid), "[] ", member.name, ";");
            }
            else
            {
                throw new InvalidSchemaException("Invalid class member type - " + member.type);
            }
        }