public LevelDataContainerTemplate <int> ParseCsv(TextAsset csvFile) { LevelDataContainerTemplate <int> cont = new LevelDataContainerTemplate <int>(); string[] lines = csvFile.text.Split('\n'); cont.Data1 = int.Parse(lines[0].Split(';')[1]); cont.Data2 = double.Parse(lines[1].Split(';')[1].Replace('.', ',')); char[] chars = prefabSettings.LevelReaderCharList; StringBuilder singleLineBuilder = new StringBuilder(); for (int i = lines.Length - 1; i > 1; i--) { singleLineBuilder.Append(ReplaceRulesLine(lines[i])); } foreach (char s in singleLineBuilder.ToString()) { for (int i = 0; chars.Length > i; i++) { if (chars[i] == s) { cont.ObjectList.Add(i); } } } return(cont); }
void OnGUI() { EditorWindow window = this; prefabSettings = (PrefabSettings)EditorGUILayout.ObjectField ( "Prefab settings (char data):", prefabSettings, typeof(PrefabSettings), false ); if (UseSingle) { GUILayout.Label("Convert CSV level files to Target type"); CsvFile = (TextAsset)EditorGUILayout.ObjectField( "SourceCSV: ", CsvFile, typeof(TextAsset), false); LevelData = (LevelData)EditorGUILayout.ObjectField( "Existing Target:", LevelData, typeof(LevelData), false); CreateNewScriptableObject = EditorGUILayout.Toggle("CreateNewTarget:", CreateNewScriptableObject); ScriptableObjectName = EditorGUILayout.TextField("NewSOName", ScriptableObjectName); if (GUILayout.Button("CONVERT")) { LevelDataContainerTemplate <int> container = ParseCsv(CsvFile); if (CreateNewScriptableObject) { LevelData = (LevelData)ScriptableObject.CreateInstance(typeof(LevelData)); AssetDatabase.CreateAsset(LevelData, $"{ParentFolderPath}/{ScriptableObjectName}.asset"); } LevelData.LevelObjects = container.ObjectList.ToArray(); EditorUtility.SetDirty(LevelData); this.Close(); } } else { GUILayout.Label("Convert list of CSV files to Target type "); ScriptableObjectBaseName = EditorGUILayout.TextField("TargetBaseName", ScriptableObjectBaseName); ScriptableObjectNameFirstNumber = EditorGUILayout.IntField("StartNumberingFrom...", ScriptableObjectNameFirstNumber); ScriptableObject target = this; SerializedObject so = new SerializedObject(target); SerializedProperty CsvFilesProperty = so.FindProperty("CsvFiles"); EditorGUILayout.PropertyField(CsvFilesProperty, true); so.ApplyModifiedProperties(); if (GUILayout.Button("CONVERT")) { int i = 0; foreach (var file in CsvFiles) { LevelDataContainerTemplate <int> container = ParseCsv(file); LevelData = (LevelData)ScriptableObject.CreateInstance(typeof(LevelData)); AssetDatabase.CreateAsset(LevelData, $"{ParentFolderPath}/{ScriptableObjectBaseName}{ScriptableObjectNameFirstNumber + i}.asset"); LevelData.LevelObjects = container.ObjectList.ToArray(); EditorUtility.SetDirty(LevelData); i++; } this.Close(); } } }