using System.Collections.Generic; using UnityEngine; public class FaciaListData : CsvData { public string ID { get; set; } public string Selection { get; set; } public string Unique_Name { get; set; } public string Model { get; set; } public string Supplier { get; set; } public string Supplier_Private { get; set; } public string Material { get; set; } public string Color_ID { get; set; } public string Color { get; set; } public string Color_Private { 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 Texture { get; set; } public string Bump { get; set; } public string Normal { get; set; } public string Finish { get; set; } public string Contrast { get; set; } public string Metalness { get; set; } public string Intensity { get; set; } public string Saturation { get; set; } public string Tile { get; set; } public string Rotation { get; set; } public string Color_1 { get; set; } public string Color_2 { get; set; } public string Color_3 { get; set; } public string Normal_Toggle { get; set; } public string Library_Name { get; set; } public FaciaListData(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.Model: Model = element; break; case CsvHeaders.Supplier: Supplier = element; break; case CsvHeaders.Supplier_Private: Supplier_Private = element; break; case CsvHeaders.Material: Material = element; break; case CsvHeaders.Color_ID: Color_ID = element; break; case CsvHeaders.Color: Color = element; break; case CsvHeaders.Color_Private: Color_Private = 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; case CsvHeaders.Texture: Texture = element; break; case CsvHeaders.Bump: Bump = element; break; case CsvHeaders.Normal_Strength: Normal = element; break; case CsvHeaders.Finish: Finish = element; break; case CsvHeaders.Contrast: Contrast = element; break; case CsvHeaders.Metalness: Metalness = element; break; case CsvHeaders.Intensity: Intensity = element; break; // ?? case CsvHeaders.Saturation: Saturation = element; break; case CsvHeaders.Tile: Tile = element; break; case CsvHeaders.Rotation: Rotation = element; break; case CsvHeaders.Color_1: Color_1 = element; break; case CsvHeaders.Color_2: Color_2 = element; break; case CsvHeaders.Color_3: Color_3 = element; break; case CsvHeaders.Normal_Toggle: Normal_Toggle = element; break; case CsvHeaders.Library_Name: Library_Name = element; break; default: break; } } } public FaciaListData(FaciaListData original) { } public static Dictionary GetDataFromCsv(List loadsFromCsv) { var value = SetHeader(loadsFromCsv); var indexes = InitializeIndexes(value.isHeaderSet, value.headers); return ExtractTFromCsv(loadsFromCsv, value.isHeaderSet, indexes, line => new FaciaListData(line, value.isHeaderSet, value.headers, 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.Supplier, 1); indexes.Add(CsvHeaders.Material, 2); indexes.Add(CsvHeaders.Color, 3); indexes.Add(CsvHeaders.Texture, 11); indexes.Add(CsvHeaders.Bump, 12); indexes.Add(CsvHeaders.Normal_Strength, 13); indexes.Add(CsvHeaders.Finish, 14); indexes.Add(CsvHeaders.Contrast, 15); indexes.Add(CsvHeaders.Tile, 17); indexes.Add(CsvHeaders.Rotation, 18); indexes.Add(CsvHeaders.Color_1, 19); indexes.Add(CsvHeaders.Color_2, 20); indexes.Add(CsvHeaders.Color_3, 21); indexes.Add(CsvHeaders.Normal_Toggle, 22); //indexes.Add(CsvHeaders.Library_Name, 23); } return indexes; } public override Dictionary GetFilters() { return new Dictionary { { CsvHeaders.Supplier.ToString(), Supplier }, { CsvHeaders.Model.ToString(), Model }, { CsvHeaders.Color.ToString(), Color } }; } public override string GetPropertyValue(CsvHeaders header) { switch (header) { case CsvHeaders.ID: return GetPrivateValueFirst(Unique_Name, ID); case CsvHeaders.Unique_Name: return Unique_Name; case CsvHeaders.Selection: return Selection; case CsvHeaders.Model: return Model; case CsvHeaders.Supplier: return GetPrivateValueFirst(Supplier, Supplier_Private); case CsvHeaders.Supplier_Private: return Supplier_Private; case CsvHeaders.Material: return Material; case CsvHeaders.Color_ID: return Color_ID; case CsvHeaders.Color: return GetPrivateValueFirst(Color, Color_Private); case CsvHeaders.Color_Private: return Color_Private; 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; case CsvHeaders.Texture: return Texture; case CsvHeaders.Bump: return Bump; case CsvHeaders.Normal_Strength: return Normal; case CsvHeaders.Finish: return Finish; case CsvHeaders.Contrast: return Contrast; case CsvHeaders.Metalness: return Metalness; case CsvHeaders.Intensity: return Intensity; case CsvHeaders.Saturation: return Saturation; case CsvHeaders.Tile: return Tile; case CsvHeaders.Rotation: return Rotation; case CsvHeaders.Color_1: return Color_1; case CsvHeaders.Color_2: return Color_2; case CsvHeaders.Color_3: return Color_3; case CsvHeaders.Normal_Toggle: return Normal_Toggle; case CsvHeaders.Library_Name: return Library_Name; default: Debug.Log("No Property found for " + header.ToString()); return ""; } } }