/// /// 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); }
/// /// 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); }
/// /// 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)); }
/// <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()); }
/// <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(); } }
/// <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()); }
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 }); }
/// <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); }