internal static StudioListData LoadStudioCSV(Stream stream, string fileName) { StudioListData data = new StudioListData(fileName); using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { List <string> Header = reader.ReadLine().Trim().Split(',').ToList(); data.Headers.Add(Header); List <string> Header2 = reader.ReadLine().Trim().Split(',').ToList(); if (int.TryParse(Header2[0], out int cell)) { //First cell of the row is a numeric ID, this is a data row data.Entries.Add(Header2); } else { //This is a second header row, as used by maps, animations, and voices data.Headers.Add(Header2); } while (!reader.EndOfStream) { string line = reader.ReadLine().Trim(); if (!line.Contains(',')) { break; } data.Entries.Add(line.Split(',').ToList()); } } return(data); }
internal static StudioListData LoadStudioCSV(Stream stream, string fileName, string guid) { StudioListData data = new StudioListData(fileName); string fileNameStripped = fileName.Remove(0, fileName.LastIndexOf('/') + 1); string listType = fileNameStripped.Split('_')[0].ToLower(); bool CategoryOrGroup = false; if (fileNameStripped.Contains("_")) { if (Sideloader.StudioListResolveBlacklist.Contains(listType)) { CategoryOrGroup = true; } } using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { List <string> Header = reader.ReadLine().Trim().Split(',').ToList(); data.Headers.Add(Header); List <string> Header2 = reader.ReadLine().Trim().Split(',').ToList(); if (int.TryParse(Header2[0], out int cell)) { //First cell of the row is a numeric ID, this is a data row data.Entries.Add(FormatList(Header2, CategoryOrGroup)); } else { //This is a second header row, as used by maps, animations, and voices data.Headers.Add(Header2); } while (!reader.EndOfStream) { string line = reader.ReadLine().Trim(); if (!line.Contains(',')) { break; } var lineSplit = line.Split(','); data.Entries.Add(FormatList(line.Split(',').ToList(), CategoryOrGroup)); } } return(data); List <string> FormatList(List <string> line, bool categoryOrGroup) { #if AI || HS2 //Convert group and category from KK to AI if (CategoryOrGroup) { if (line.Count == 2) { string temp = line[1]; line[1] = line[0]; line.Add(temp); } } #endif return(line); } }