using System.Collections.Generic; using UnityEngine; public class DoorListData : CsvData { public string ID { get; set; } public string Selection { get; set; } public string Unique_Name { get; set; } public string Supplier_ID { get; set; } public string Supplier { get; set; } public string Supplier_Private { get; set; } public string Model_ID { get; set; } public string Model { 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 Drawer_Model { get; set; } public string Door_Model { get; set; } public string Thin_Model { get; set; } public string Drawer_Texture { get; set; } public string Door_Texture { get; set; } public string Thin_Texture { get; set; } public string Rotation_Text_Top_1 { get; set; } public string Rotation_Text_Center_1 { get; set; } public string Rotation_Text_Side_1 { get; set; } public string Rotation_Text_Top_2 { get; set; } public string Rotation_Text_Center_2 { get; set; } public string Rotation_Text_Side_2 { get; set; } public string Rotation_Text_Top_3 { get; set; } public string Rotation_Text_Center_3 { get; set; } public string Rotation_Text_Side_3 { get; set; } public string Color_1 { get; set; } public string Color_2 { get; set; } public string Color_3 { get; set; } public string Finish { get; set; } public string Drawer_Max_Height { get; set; } public string Door_Thin_Max_Wide { get; set; } public string Contrast { get; set; } public string Drawer_Edge_Top { get; set; } public string Door_Edge_Top { get; set; } public string Thin_Edge_Top { get; set; } public string Drawer_Edge_Side { get; set; } public string Door_Edge_Side { get; set; } public string Thin_Edge_Side { get; set; } public string Door_Thickness { get; set; } public string Shadow { get; set; } public DoorListData(string line, bool isHeaderSet, List headers, Dictionary indexes) { _line = line; _isHeaderSet = isHeaderSet; _headers = headers; _indexes = indexes; string[] lineElements = line.Split(','); string[] elements = null; 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_ID: Supplier_ID = element; break; case CsvHeaders.Supplier: Supplier = element; break; case CsvHeaders.Supplier_Private: Supplier_Private = element; break; case CsvHeaders.Model_ID: Model_ID = element; break; case CsvHeaders.Model: Model = element; break; case CsvHeaders.Color_ID: Color_ID = element; break; case CsvHeaders.Color: Color = 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.Door_Models: elements = element.Split("_"); Drawer_Model = elements[0]; Door_Model = elements[1]; Thin_Model = elements[2]; break; case CsvHeaders.Drawer_Model: Drawer_Model = element; break; case CsvHeaders.Door_Model: Door_Model = element; break; case CsvHeaders.Thin_Model: Thin_Model = element; break; case CsvHeaders.Door_Textures: elements = element.Split("_"); Drawer_Texture = elements[0]; Door_Texture = elements[1]; Thin_Texture = elements[2]; break; case CsvHeaders.Drawer_Texture: Drawer_Texture = element; break; case CsvHeaders.Door_Texture: Door_Texture = element; break; case CsvHeaders.Thin_Texture: Thin_Texture = element; break; case CsvHeaders.Rotation_Text_Top: elements = element.Split("_"); Rotation_Text_Top_1 = elements[0]; Rotation_Text_Top_2 = elements[1]; Rotation_Text_Top_3 = elements[2]; break; case CsvHeaders.Rotation_Text_Center: elements = element.Split("_"); Rotation_Text_Center_1 = elements[0]; Rotation_Text_Center_2 = elements[1]; Rotation_Text_Center_3 = elements[2]; break; case CsvHeaders.Rotation_Text_Side: elements = element.Split("_"); Rotation_Text_Side_1 = elements[0]; Rotation_Text_Side_2 = elements[1]; Rotation_Text_Side_3 = elements[2]; break; case CsvHeaders.Rotation_Text_Top_1: Rotation_Text_Top_1 = element; break; case CsvHeaders.Rotation_Text_Center_1: Rotation_Text_Center_1 = element; break; case CsvHeaders.Rotation_Text_Side_1: Rotation_Text_Side_1 = element; break; case CsvHeaders.Rotation_Text_Top_2: Rotation_Text_Top_2 = element; break; case CsvHeaders.Rotation_Text_Center_2: Rotation_Text_Center_2 = element; break; case CsvHeaders.Rotation_Text_Side_2: Rotation_Text_Side_2 = element; break; case CsvHeaders.Rotation_Text_Top_3: Rotation_Text_Top_3 = element; break; case CsvHeaders.Rotation_Text_Center_3: Rotation_Text_Center_3 = element; break; case CsvHeaders.Rotation_Text_Side_3: Rotation_Text_Side_3 = 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.Finish: Finish = element; break; case CsvHeaders.Drawer_Max_Height: Drawer_Max_Height = element; break; case CsvHeaders.Door_Thin_Max_Wide: Door_Thin_Max_Wide = element; break; case CsvHeaders.Contrast: Contrast = element; break; case CsvHeaders.Edge_Top: elements = element.Split("_"); Drawer_Edge_Top = elements[0]; Door_Edge_Top = elements[1]; Thin_Edge_Top = elements[2]; break; case CsvHeaders.Drawer_Edge_Top: Drawer_Edge_Top = element; break; case CsvHeaders.Door_Edge_Top: Door_Edge_Top = element; break; case CsvHeaders.Thin_Edge_Top: Thin_Edge_Top = element; break; case CsvHeaders.Edge_Side: elements = element.Split("_"); Drawer_Edge_Side = elements[0]; Door_Edge_Side = elements[1]; Thin_Edge_Side = elements[2]; break; case CsvHeaders.Drawer_Edge_Side: Drawer_Edge_Side = element; break; case CsvHeaders.Door_Edge_Side: Door_Edge_Side = element; break; case CsvHeaders.Thin_Edge_Side: Thin_Edge_Side = element; break; case CsvHeaders.Door_Thickness: Door_Thickness = element; break; case CsvHeaders.Shadow: Shadow = element; break; default: break; } } } 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 DoorListData(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.Supplier, 1); indexes.Add(CsvHeaders.Model, 2); indexes.Add(CsvHeaders.Color, 3); indexes.Add(CsvHeaders.Drawer_Model, 11); indexes.Add(CsvHeaders.Door_Model, 12); indexes.Add(CsvHeaders.Thin_Model, 13); indexes.Add(CsvHeaders.Drawer_Texture, 14); indexes.Add(CsvHeaders.Door_Texture, 15); indexes.Add(CsvHeaders.Thin_Texture, 16); indexes.Add(CsvHeaders.Rotation_Text_Top_1, 17); indexes.Add(CsvHeaders.Rotation_Text_Center_1, 18); indexes.Add(CsvHeaders.Rotation_Text_Side_1, 19); indexes.Add(CsvHeaders.Rotation_Text_Top_2, 20); indexes.Add(CsvHeaders.Rotation_Text_Center_2, 21); indexes.Add(CsvHeaders.Rotation_Text_Side_2, 22); indexes.Add(CsvHeaders.Rotation_Text_Top_3, 23); indexes.Add(CsvHeaders.Rotation_Text_Center_3, 24); indexes.Add(CsvHeaders.Rotation_Text_Side_3, 25); indexes.Add(CsvHeaders.Color_1, 26); indexes.Add(CsvHeaders.Color_2, 27); indexes.Add(CsvHeaders.Color_3, 28); indexes.Add(CsvHeaders.Finish, 29); indexes.Add(CsvHeaders.Drawer_Max_Height, 30); indexes.Add(CsvHeaders.Door_Thin_Max_Wide, 31); indexes.Add(CsvHeaders.Contrast, 32); indexes.Add(CsvHeaders.Drawer_Edge_Top, 33); indexes.Add(CsvHeaders.Door_Edge_Top, 34); indexes.Add(CsvHeaders.Thin_Edge_Top, 35); indexes.Add(CsvHeaders.Drawer_Edge_Side, 36); indexes.Add(CsvHeaders.Door_Edge_Side, 37); indexes.Add(CsvHeaders.Thin_Edge_Side, 38); indexes.Add(CsvHeaders.Door_Thickness, 39); } 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.Selection: return Selection; case CsvHeaders.Unique_Name: return Unique_Name; case CsvHeaders.Supplier_ID: return Supplier_ID; case CsvHeaders.Supplier: return GetPrivateValueFirst(Supplier, Supplier_Private); case CsvHeaders.Supplier_Private: return Supplier_Private; case CsvHeaders.Model_ID: return Model_ID; case CsvHeaders.Model: return Model; 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.Door_Models: return Drawer_Model + "_" + Door_Model + "_" + Thin_Model; case CsvHeaders.Drawer_Model: return Drawer_Model; case CsvHeaders.Door_Model: return Door_Model; case CsvHeaders.Thin_Model: return Thin_Model; case CsvHeaders.Door_Textures: return Drawer_Texture + "_" + Door_Texture + "_" + Thin_Texture; case CsvHeaders.Drawer_Texture: return Drawer_Texture; case CsvHeaders.Door_Texture: return Door_Texture; case CsvHeaders.Thin_Texture: return Thin_Texture; case CsvHeaders.Rotation_Text_Top: return Rotation_Text_Top_1 + "_" + Rotation_Text_Top_2 + "_" + Rotation_Text_Top_3; case CsvHeaders.Rotation_Text_Center: return Rotation_Text_Center_1 + "_" + Rotation_Text_Center_2 + "_" + Rotation_Text_Center_3; case CsvHeaders.Rotation_Text_Side: return Rotation_Text_Side_1 + "_" + Rotation_Text_Side_2 + "_" + Rotation_Text_Side_3; case CsvHeaders.Rotation_Text_Top_1: return Rotation_Text_Top_1; case CsvHeaders.Rotation_Text_Center_1: return Rotation_Text_Center_1; case CsvHeaders.Rotation_Text_Side_1: return Rotation_Text_Side_1; case CsvHeaders.Rotation_Text_Top_2: return Rotation_Text_Top_2; case CsvHeaders.Rotation_Text_Center_2: return Rotation_Text_Center_2; case CsvHeaders.Rotation_Text_Side_2: return Rotation_Text_Side_2; case CsvHeaders.Rotation_Text_Top_3: return Rotation_Text_Top_3; case CsvHeaders.Rotation_Text_Center_3: return Rotation_Text_Center_3; case CsvHeaders.Rotation_Text_Side_3: return Rotation_Text_Side_3; case CsvHeaders.Color_1: return Color_1; case CsvHeaders.Color_2: return Color_2; case CsvHeaders.Color_3: return Color_3; case CsvHeaders.Finish: return Finish; case CsvHeaders.Drawer_Max_Height: return Drawer_Max_Height; case CsvHeaders.Door_Thin_Max_Wide: return Door_Thin_Max_Wide; case CsvHeaders.Contrast: return Contrast; case CsvHeaders.Edge_Top: return Drawer_Edge_Top + "_" + Door_Edge_Top + "_" + Thin_Edge_Top; case CsvHeaders.Drawer_Edge_Top: return Drawer_Edge_Top; case CsvHeaders.Door_Edge_Top: return Door_Edge_Top; case CsvHeaders.Thin_Edge_Top: return Thin_Edge_Top; case CsvHeaders.Edge_Side: return Drawer_Edge_Side + "_" + Door_Edge_Side + "_" + Thin_Edge_Side; case CsvHeaders.Drawer_Edge_Side: return Drawer_Edge_Side; case CsvHeaders.Door_Edge_Side: return Door_Edge_Side; case CsvHeaders.Thin_Edge_Side: return Thin_Edge_Side; case CsvHeaders.Door_Thickness: return Door_Thickness; case CsvHeaders.Shadow: return Shadow; default: Debug.Log("No Property found for " + header.ToString()); return ""; } } }