Exemple #1
0
        ///
        /// Write a property of a data class.
        ///
        private void WriteProperty(MemberFieldData field)
        {
            string tmp          = string.Empty;
            var    propertyName = GetPropertyNameForField(field);
            var    fieldName    = GetFieldNameForField(field);

            if (field.type == CellType.Enum)
            {
                tmp += "public " + field.Name + " " + propertyName + " ";
            }
            else
            {
                if (field.IsArrayType)
                {
                    tmp += "public " + field.Type + "[]" + " " + propertyName + " ";
                }
                else
                {
                    tmp += "public " + field.Type + " " + propertyName + " ";
                }
            }

            tmp += "{ get {return " + fieldName + "; } set { " + fieldName + " = value;} }";

            m_Writer.WriteLine(m_Indentation + tmp);
        }
Exemple #2
0
        ///
        /// Write a property of a data class.
        ///
        private void WriteProperty(MemberFieldData field)
        {
            TextInfo ti = new CultureInfo("en-US", false).TextInfo;

            m_Writer.WriteLine(m_Indentation + "[ExposeProperty]");

            string tmp = string.Empty;

            if (field.type == CellType.Enum)
            {
                tmp += "public " + field.Name + " " + field.Name.ToUpper() + " ";
            }
            else
            {
                if (field.IsArrayType)
                {
                    tmp += "public " + field.Type + "[]" + " " + ti.ToTitleCase(field.Name) + " ";
                }
                else
                {
                    tmp += "public " + field.Type + " " + ti.ToTitleCase(field.Name) + " ";
                }
            }

            tmp += "{ get {return " + field.Name.ToLower() + "; } set { " + field.Name.ToLower() + " = value;} }";

            m_Writer.WriteLine(m_Indentation + tmp);
        }
Exemple #3
0
        ///
        /// Write a member field of a data class.
        ///
        private void WriteMemberField(MemberFieldData field)
        {
            m_Writer.WriteLine(m_Indentation + "[SerializeField]");

            var    fieldName = GetFieldNameForField(field);
            string tmp;

            if (field.type == CellType.Enum)
            {
                tmp = field.Name + " " + fieldName + ";";
            }
            else
            {
                if (field.IsArrayType)
                {
                    tmp = field.Type + "[]" + " " + fieldName + " = new " + field.Type + "[0]" + ";";
                }
                else
                {
                    tmp = field.Type + " " + fieldName + ";";
                }
            }

            m_Writer.WriteLine(m_Indentation + tmp);
        }
        /// <summary>
        /// Create a data class which describes the spreadsheet and write it down on the specified folder.
        /// </summary>
        protected void CreateEnumScript(BaseMachine machine, ScriptPrescription sp)
        {
            // check the directory path exists
            string fullPath   = TargetPathForEnum(machine.WorkSheetName);
            string folderPath = Path.GetDirectoryName(fullPath);

            if (!Directory.Exists(folderPath))
            {
                EditorUtility.DisplayDialog(
                    "Warning",
                    "The folder for runtime script files does not exist. Check the path " + folderPath + " exists.",
                    "OK"
                    );
                return;
            }

            List <MemberFieldData> fieldList = new List <MemberFieldData>();

            //FIXME: replace ValueType to CellType and support Enum type.
            foreach (ColumnHeader header in machine.ColumnHeaderList)
            {
                if (header.type == CellType.Enum)
                {
                    MemberFieldData member = new MemberFieldData();
                    member.Name        = header.name;
                    member.type        = header.type;
                    member.IsArrayType = header.isArray;
                    fieldList.Add(member);
                }
            }

            // write a script to the given folder.
            using (var writer = new StreamWriter(fullPath))
            {
                StringBuilder builder = new StringBuilder();
                builder.AppendLine("namespace MasterData");
                builder.AppendLine("{");
                foreach (var field in fieldList)
                {
                    builder.AppendLine("    public enum " + field.Name.ToUpper());
                    builder.AppendLine("    {");

                    var enumField = machine.EnumFiledList.Find(data => data.name == field.Name);
                    foreach (var enumID in enumField.enumList)
                    {
                        builder.AppendLine("        " + enumID + ",");
                    }

                    builder.AppendLine("        Max,");
                    builder.AppendLine("    }");
                    builder.AppendLine("");
                }

                builder.AppendLine("}");
                writer.Write(builder.ToString());
                writer.Close();
            }
        }
        void CreateDataClassScript()
        {
            ExcelMachine machine = target as ExcelMachine;

#if UNITY_EDITOR_WIN
            var files = new DirectoryInfo(machine.fileFolder).GetFiles().Where(x => x.Extension == ".xlsx");
#else // for UNITY_EDITOR_OSX
            var files = new DirectoryInfo(machine.fileFolder).GetFiles().Where(x => x.Extension == ".xls");
#endif
            foreach (var fileInfo in files)
            {
                var className = Path.GetFileNameWithoutExtension(fileInfo.Name);
                // check the directory path exists
                var    targetPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(target));
                string fullPath   = Path.Combine(targetPath + "/Runtime", className + "ExcelData." + "cs");
                string folderPath = Path.GetDirectoryName(fullPath);
                if (!Directory.Exists(folderPath))
                {
                    EditorUtility.DisplayDialog(
                        "Warning",
                        "The folder for runtime script files does not exist. Check the path " + folderPath + " exists.",
                        "OK"
                        );
                    return;
                }

                string error   = string.Empty;
                var    titles  = new ExcelQuery(fileInfo.FullName, 0).GetTitle(2, ref error);
                var    types   = new ExcelQuery(fileInfo.FullName, 0).GetTitle(1, ref error);
                var    comment = new ExcelQuery(fileInfo.FullName, 0).GetTitle(0, ref error);

                List <MemberFieldData> fieldList = new List <MemberFieldData>();

                for (int i = 0; i < titles.Length; i++)
                {
                    MemberFieldData member = new MemberFieldData();
                    member.Name = titles[i];
                    member.type = MemberFieldData.GetType(types[i]);
                    fieldList.Add(member);
                }

                var sp = new ScriptPrescription
                {
                    className    = className + "ExcelData",
                    template     = GetTemplate("DataClass"),
                    memberFields = fieldList.ToArray()
                };

                // write a script to the given folder.
                using (var writer = new StreamWriter(fullPath))
                {
                    writer.Write(new ScriptGenerator(sp).ToString());
                    writer.Close();
                }
            }
        }
        /// <summary>
        /// Create a data class which describes the spreadsheet and write it down on the specified folder.
        /// </summary>
        protected void CreateDataClassScript(BaseMachine machine, ScriptPrescription sp)
        {
            // check the directory path exists
            string fullPath   = TargetPathForData(machine.WorkSheetName);
            string folderPath = Path.GetDirectoryName(fullPath);

            if (!Directory.Exists(folderPath))
            {
                EditorUtility.DisplayDialog(
                    "Warning",
                    "The folder for runtime script files does not exist. Check the path " + folderPath + " exists.",
                    "OK"
                    );
                return;
            }

            List <MemberFieldData> fieldList = new List <MemberFieldData>();
            string keyListStr = "";

            //FIXME: replace ValueType to CellType and support Enum type.
            foreach (ColumnHeader header in machine.ColumnHeaderList)
            {
                MemberFieldData member = new MemberFieldData();
                member.Name        = header.name;
                member.type        = header.type;
                member.IsArrayType = header.isArray;
                member.IsKey       = header.isKey;
                if (member.IsKey)
                {
                    keyListStr += member.Name + "$";
                }
                fieldList.Add(member);
            }
            if (keyListStr == "")
            {
                Debug.Log(machine.ColumnHeaderList);
                keyListStr = machine.ColumnHeaderList[0].name;
            }
            else if (keyListStr.EndsWith("$"))
            {
                keyListStr = keyListStr.Substring(0, keyListStr.Length - 1);
            }

            sp.className  = machine.WorkSheetName + "Data";
            sp.template   = GetTemplate("DataClass");
            sp.keyListStr = keyListStr;

            sp.memberFields = fieldList.ToArray();

            // write a script to the given folder.
            using (var writer = new StreamWriter(fullPath))
            {
                writer.Write(new ScriptGenerator(sp).ToString());
                writer.Close();
            }
        }
        /// <summary>
        /// Override to implement your own property name format.
        /// </summary>
        protected virtual string GetPropertyNameForField(MemberFieldData field)
        {
            //if (field.type == CellType.Enum)
            //    return field.Name.ToUpper();

            // To prevent an error can happen when the name of the column header has all lower case characters.
            TextInfo ti = new CultureInfo("en-US", false).TextInfo;

            return(ti.ToTitleCase(field.Name));
        }
Exemple #8
0
 /// <summary>
 /// Override to implement your own field name format.
 /// </summary>
 protected virtual string GetFieldNameForField(MemberFieldData field)
 {
     char[] chArray = field.Name.ToCharArray();
     if (chArray.Length > 1 && Char.IsLower(chArray[1]))
     {
         chArray[0] = char.ToLower(chArray[0]);
         return(new string(chArray));
     }
     return(field.Name.ToLower());
 }
Exemple #9
0
        /// <summary>
        /// Create a data class which describes the spreadsheet and write it down on the specified folder.
        /// </summary>
        protected void CreateDataClassScript(BaseMachine machine, ScriptPrescription sp)
        {
            // check the directory path exists
            string fullPath   = TargetPathForData(machine.WorkSheetName);
            string folderPath = Path.GetDirectoryName(fullPath);

            if (!Directory.Exists(folderPath))
            {
                EditorUtility.DisplayDialog(
                    "Warning",
                    "The folder for runtime script files does not exist. Check the path " + folderPath + " exists.",
                    "OK"
                    );
                return;
            }

            List <MemberFieldData> fieldList = new List <MemberFieldData>();

            //FIXME: replace ValueType to CellType and support Enum type.
            foreach (ColumnHeader header in machine.ColumnHeaderListDict.GetValue(machine.WorkSheetName).list)
            {
                MemberFieldData member = new MemberFieldData();
                member.Name        = header.name;
                member.type        = header.type;
                member.IsArrayType = header.isArray;

                fieldList.Add(member);
            }

            sp.className = machine.GetComposedDataClassName();
            sp.template  = GetTemplate("DataClass");

            sp.memberFields = fieldList.ToArray();

            // write a script to the given folder.
            using (var writer = new StreamWriter(fullPath))
            {
                writer.Write(new ScriptGenerator(sp).ToString());
                writer.Close();
            }
        }
Exemple #10
0
 /// <summary>
 /// Override to implement your own field name format.
 /// </summary>
 protected virtual string GetFieldNameForField(MemberFieldData field)
 {
     return(ToLowerString(field.Name));
 }
 /// <summary>
 /// Override to implement your own field name format.
 /// </summary>
 protected virtual string GetFieldNameForField(MemberFieldData field)
 {
     return("_" + field.Name.ToLower());
 }
Exemple #12
0
 private string GetFieldNameForField(MemberFieldData field)
 {
     return(field.Name.ToLower());
 }
 protected ColumnHeader ParseColumnHeader(MemberFieldData fieldData, int order)
 {
     return(new ColumnHeader {
         name = fieldData.Name, type = fieldData.type, isArray = fieldData.IsArrayType, OrderNO = order
     });
 }
Exemple #14
0
 /// <summary>
 /// Override to implement your own property name format.
 /// </summary>
 protected virtual string GetPropertyNameForField(MemberFieldData field)
 {
     return(field.type == CellType.Enum ? field.Name.ToUpper() : field.Name);
 }