Exemplo n.º 1
0
 private string getFieldTypeString(GameDataField field)
 {
     if (isPrimitiveFieldType(field))
     {
         return(getPrimitiveFieldTypeString(field));
     }
     else
     {
         return(getCompositeFieldTypeString(field));
     }
 }
Exemplo n.º 2
0
        private string getFieldBuilder(GameDataField field)
        {
            StringBuilder fieldBuilder = new StringBuilder();

            fieldBuilder
            .Append(JsonConvert.ToString(field.fieldName))
            .Append(": ")
            .Append(getFieldValueBuilder(field));

            return(fieldBuilder.ToString());
        }
Exemplo n.º 3
0
        private string getCompositeFieldTypeString(GameDataField field)
        {
            StringBuilder compositeFieldTypeBuilder = new StringBuilder();

            compositeFieldTypeBuilder
            .Append("vector")
            .Append("<")
            .Append(getFieldTypeString(field.innerField))
            .Append(">");

            return(compositeFieldTypeBuilder.ToString());
        }
Exemplo n.º 4
0
 private string getFieldTypeString(GameDataField field, bool isRecall = false)
 {
     if (isPrimitiveFieldType(field))
     {
         string fieldType = getPrimitiveFieldTypeString(field);
         return(types.Contains(fieldType) ? fieldType.ToLower().Replace("i18n", "int") : fieldType);
     }
     else
     {
         return(getCompositeFieldTypeString(field));
     }
 }
Exemplo n.º 5
0
        private string getFieldString(GameDataField field)
        {
            StringBuilder fieldBuilder = new StringBuilder();

            fieldBuilder
            .Append("public")
            .Append(" ")
            .Append(getFieldTypeString(field))
            .Append(" ")
            .Append(getFieldNameString(field));

            return(fieldBuilder.ToString());
        }
Exemplo n.º 6
0
        internal void AddField(D2OReader reader)
        {
            GameDataField field = new GameDataField(reader);

            Fields.Add(field);
        }
Exemplo n.º 7
0
 private static bool isPrimitiveFieldType(GameDataField field)
 {
     return(field.innerField == null);
 }
Exemplo n.º 8
0
 private string getFieldNameString(GameDataField field)
 {
     return(field.fieldName);
 }
Exemplo n.º 9
0
 private string getPrimitiveFieldTypeString(GameDataField field)
 {
     return(field.fieldType > 0 ? classDefinitions[(int)field.fieldType].Name : field.fieldType.ToString());
 }
Exemplo n.º 10
0
        private string getFieldValueBuilder(GameDataField field)
        {
            StringBuilder fieldValueBuilder = new StringBuilder();

            switch (field.fieldType)
            {
            case GameDataTypeEnum.Vector:
                fieldValueBuilder.Append("[");
                int vectorLength = reader.ReadInt();

                for (int i = 0; i < vectorLength; i++)
                {
                    fieldValueBuilder
                    .Append(getFieldValueBuilder(field.innerField))
                    .Append(writeCommaIfHasMore(vectorLength, i));
                }

                fieldValueBuilder.Append("]");
                break;

            case GameDataTypeEnum.Int:
                fieldValueBuilder.Append(reader.ReadInt());
                break;

            case GameDataTypeEnum.UInt:
                fieldValueBuilder.Append(reader.ReadUInt());
                break;

            case GameDataTypeEnum.I18N:
                fieldValueBuilder.Append(reader.ReadInt());
                break;

            case GameDataTypeEnum.String:
                fieldValueBuilder.Append(JsonConvert.ToString(reader.ReadUtf8()));
                break;

            case GameDataTypeEnum.Bool:
                fieldValueBuilder.Append(JsonConvert.ToString(reader.ReadBool()));     //in json bool is true/false not True/False
                break;

            case GameDataTypeEnum.Double:
                fieldValueBuilder.Append(JsonConvert.ToString(reader.ReadDouble()));     //handling the "," vs "." problem of the culture specifics
                break;

            default:
                if (field.fieldType > 0)     //if type is an object
                {
                    int classId = reader.ReadInt();
                    if (classDefinitions.ContainsKey(classId))
                    {
                        fieldValueBuilder.Append(getObjectBuilder(classId));
                    }
                }
                else
                {
                    Console.WriteLine("Error: invalid type( {0} ) for field {1}", field.fieldType, field.fieldName);
                }
                break;
            }
            return(fieldValueBuilder.ToString());
        }