public void Setup(Type _assetType, string settingPath) { result = new Result(); assetType = _assetType; dstFolder = CCLogic.GetFilePathRelativesToAssets(settingPath, setting.destination); // Asset の名前をつけるときに利用する key. keyIndexes = ClassGenerator.FindKeyIndexes(setting, fields); }
public static void GenerateCode(ConvertSetting s, GlobalCCSettings gSettings) { string settingPath = s.GetDirectoryPath(); string csvPath = CCLogic.GetFilePathRelativesToAssets(settingPath, s.GetCsvPath(gSettings)); TextAsset textAsset = AssetDatabase.LoadAssetAtPath <TextAsset>(csvPath); if (textAsset == null) { Debug.LogError("Not found : " + csvPath); return; } string directoryPath = CCLogic.GetFullPath(settingPath, s.codeDestination); if (!Directory.Exists(directoryPath)) { Debug.LogError("Not found directory: " + directoryPath); return; } CsvData csv = CsvLogic.GetValidCsvData(textAsset.text, gSettings); if (s.isEnum) { CsvData headers = csv.Slice(gSettings.rowIndexOfName, gSettings.rowIndexOfName + 1); CsvData contents = csv.Slice(gSettings.rowIndexOfEnumContentStart); string code = EnumGenerator.Generate(s.className, headers, contents, s.verbose); string filePath = Path.Combine(directoryPath, s.className + ".cs"); using (StreamWriter writer = File.CreateText(filePath)) { writer.WriteLine(code); } Debug.LogFormat("Create \"{0}\"", filePath); } else { Field[] fields = CsvLogic.GetFieldsFromHeader(csv, gSettings); if (s.classGenerate) { string code = ClassGenerator.GenerateClass(s.className, fields, s.IsPureClass); string filePath = Path.Combine(directoryPath, s.className + ".cs"); using (StreamWriter writer = File.CreateText(filePath)) { writer.WriteLine(code); } Debug.LogFormat("Create \"{0}\"", filePath); } if (s.tableClassGenerate) { int[] keyIndexes = ClassGenerator.FindKeyIndexes(s, fields); string[] keys = s.keys; Field[] key = null; if (keyIndexes.Length > 0) { List <Field> keyFieldList = new List <Field>(); for (int i = 0; i < keyIndexes.Length; i++) { keyFieldList.Add(fields[keyIndexes[i]]); } key = keyFieldList.ToArray(); } string code = ClassGenerator.GenerateTableClass(s, s.TableClassName, key); string filePath = Path.Combine(directoryPath, s.TableClassName + ".cs"); using (StreamWriter writer = File.CreateText(filePath)) { writer.WriteLine(code); } Debug.LogFormat("Create \"{0}\"", filePath); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); }