using System.Collections.Generic; using System.Diagnostics.Contracts; using UnityEditor; using UnityEngine; public class KnobListData : CsvData { public string ID { get; set; } public string Selection { get; set; } public string Unique_Name { get; set; } public string Supplier { get; set; } public string FBX { get; set; } public string Model { get; set; } public string Material { get; set; } public string Center_To_Center { get; set; } public string X { get; set; } public string Y { get; set; } public string Z { get; set; } public string Language { get { string colorDescription = ""; if (_G.L == 1) { colorDescription = GetPrivateValueFirst(Language_1, Language_1_Private); } else if (_G.L == 2) { colorDescription = GetPrivateValueFirst(Language_2, Language_2_Private); } else if (_G.L == 3) { colorDescription = GetPrivateValueFirst(Language_3, Language_3_Private); } if (string.IsNullOrEmpty(colorDescription)) { colorDescription = GetPrivateValueFirst(Language_1, Language_1_Private); } return colorDescription; } } public string Language_1 { get; set; } public string Language_1_Private { get; set; } public string Language_2 { get; set; } public string Language_2_Private { get; set; } public string Language_3 { get; set; } public string Language_3_Private { get; set; } public string Supplier_Private { get; set; } public KnobListData(string line, bool isHeaderSet, List headers, Dictionary indexes) { _line = line; _isHeaderSet = isHeaderSet; _headers = headers; _indexes = indexes; string[] lineElements = line.Split(','); foreach (var keyValue in _indexes) { string element = ExtractElementFromLine(lineElements, keyValue.Value); switch (keyValue.Key) { case CsvHeaders.ID: ID = element; break; case CsvHeaders.Selection: Selection = element; break; case CsvHeaders.Unique_Name: Unique_Name = element; break; case CsvHeaders.Supplier: Supplier = element; break; case CsvHeaders.Supplier_Private: Supplier_Private = element; break; case CsvHeaders.Model: Model = element; break; case CsvHeaders.FBX: FBX = element; break; case CsvHeaders.Material: Material = element; break; case CsvHeaders.Center_To_Center: Center_To_Center = element; break; case CsvHeaders.X: X = element; break; // ?? case CsvHeaders.Y: Y = element; break; case CsvHeaders.Z: Z = element; break; case CsvHeaders.Language_1: Language_1 = element; break; case CsvHeaders.Language_1_Private: Language_1_Private = element; break; case CsvHeaders.Language_2: Language_2 = element; break; case CsvHeaders.Language_2_Private: Language_2_Private = element; break; case CsvHeaders.Language_3: Language_3 = element; break; case CsvHeaders.Language_3_Private: Language_3_Private = element; break; default: break; } } } public KnobListData(KnobListData original) { } public static Dictionary GetDataFromCsv(List loadsFromCsv) { var value = SetHeader(loadsFromCsv); var indexes = InitializeIndexes(value.Item1, value.Item2); return ExtractTFromCsv(loadsFromCsv, value.Item1, indexes, line => new KnobListData(line, value.Item1, value.Item2, indexes)); } public static Dictionary InitializeIndexes(bool isHeaderSet, List headers) { Dictionary indexes = new(); if (isHeaderSet) { indexes = InitializeIndexesWithHeaders(headers); } else { indexes.Add(CsvHeaders.Unique_Name, 0); indexes.Add(CsvHeaders.Model, 1); indexes.Add(CsvHeaders.FBX, 2); indexes.Add(CsvHeaders.Material, 3); indexes.Add(CsvHeaders.Center_To_Center, 4); indexes.Add(CsvHeaders.X, 5); indexes.Add(CsvHeaders.Y, 6); indexes.Add(CsvHeaders.Z, 7); indexes.Add(CsvHeaders.Language_1, 8); indexes.Add(CsvHeaders.Language_2, 9); indexes.Add(CsvHeaders.Language_3, 10); } return indexes; } public override Dictionary GetFilters() { throw new System.NotImplementedException(); } public override string GetPropertyValue(CsvHeaders header) { switch (header) { case CsvHeaders.ID: return string.IsNullOrEmpty(ID) ? Unique_Name : ID; case CsvHeaders.Selection: return Selection; case CsvHeaders.Unique_Name: return Unique_Name; case CsvHeaders.Supplier: return Supplier; case CsvHeaders.Supplier_Private: return Supplier_Private; case CsvHeaders.FBX: return FBX; case CsvHeaders.Model: return Model; case CsvHeaders.Material: return Material; case CsvHeaders.Center_To_Center: return Center_To_Center; case CsvHeaders.X: return X; case CsvHeaders.Y: return Y; case CsvHeaders.Z: return Z; case CsvHeaders.Language:return Language; case CsvHeaders.Language_1: return Language_1; case CsvHeaders.Language_1_Private: return Language_1_Private; case CsvHeaders.Language_2: return Language_2; case CsvHeaders.Language_2_Private: return Language_2_Private; case CsvHeaders.Language_3: return Language_3; case CsvHeaders.Language_3_Private: return Language_3_Private; default: Debug.Log("No Property found for " + header.ToString()); return ""; } } }