static void ReadColours(CarList list, string csvPath) { using (TextReader colourInput = new StreamReader(csvPath, Encoding.UTF8)) { using (CsvReader colourCsv = new CsvReader(colourInput)) { colourCsv.Configuration.RegisterClassMap <CarColourCSVMap>(); while (colourCsv.Read()) { CarColourWithName newColourWithName = colourCsv.GetRecord <CarColourWithName>(); CarColour newColour = new CarColour { ThumbnailColour = newColourWithName.ThumbnailColour, PaletteID = newColourWithName.PaletteID, JapaneseName = newColourWithName.JapaneseName, LatinName = newColourWithName.LatinName }; Car existingCar = list.Cars.Find(car => car.CarName == newColourWithName.CarName); existingCar.Colours.Remove(existingCar.Colours.Where(colour => colour.PaletteID == newColour.PaletteID).SingleOrDefault()); if (newColour.JapaneseName != "Delete") { existingCar.Colours.Add(newColour); } } foreach (Car car in list.Cars) { car.Colours = car.Colours.OrderBy(colour => colour.PaletteID).ToList(); } } } }
static void Dump() { CarList list = new CarList(); list.ReadFromFiles(); using (TextWriter output = new StreamWriter(File.Create("Cars.csv"), Encoding.UTF8)) { using (CsvWriter csv = new CsvWriter(output)) { using (TextWriter colourOutput = new StreamWriter(File.Create("Colours.csv"), Encoding.UTF8)) { using (CsvWriter colourCsv = new CsvWriter(colourOutput)) { csv.Configuration.RegisterClassMap <CarCSVMap>(); csv.Configuration.QuoteAllFields = true; csv.WriteHeader <Car>(); colourCsv.Configuration.RegisterClassMap <CarColourCSVMap>(); colourCsv.Configuration.QuoteAllFields = true; colourCsv.WriteHeader <CarColourWithName>(); foreach (Car car in list.Cars) { csv.NextRecord(); csv.WriteRecord(car); foreach (CarColour colour in car.Colours) { CarColourWithName colourWithName = new CarColourWithName { CarName = car.CarName, ThumbnailColour = colour.ThumbnailColour, PaletteID = colour.PaletteID, JapaneseName = colour.JapaneseName, LatinName = colour.LatinName }; colourCsv.NextRecord(); colourCsv.WriteRecord(colourWithName); } } } } } } }
static void Load() { CarList list = new CarList(); list.Cars = new List <Car>(); using (TextReader input = new StreamReader("Cars.csv", Encoding.UTF8)) { using (CsvReader csv = new CsvReader(input)) { using (TextReader colourInput = new StreamReader("Colours.csv", Encoding.UTF8)) { using (CsvReader colourCsv = new CsvReader(colourInput)) { csv.Configuration.RegisterClassMap <CarCSVMap>(); colourCsv.Configuration.RegisterClassMap <CarColourCSVMap>(); while (csv.Read()) { Car newCar = csv.GetRecord <Car>(); newCar.Colours = new List <CarColour>(); list.Cars.Add(newCar); } while (colourCsv.Read()) { CarColourWithName newColourWithName = colourCsv.GetRecord <CarColourWithName>(); string carName = newColourWithName.CarName; CarColour newColour = new CarColour { ThumbnailColour = newColourWithName.ThumbnailColour, PaletteID = newColourWithName.PaletteID, JapaneseName = newColourWithName.JapaneseName, LatinName = newColourWithName.LatinName }; list.Cars.Find(car => car.CarName == carName).Colours.Add(newColour); } } } } } list.SaveToFiles(); }
static void Dump() { CarList list = new CarList(); list.ReadFromFiles(); using (TextWriter output = new StreamWriter(File.Create("CarColours.txt"), Encoding.UTF8)) { foreach (Car car in list.Cars) { output.WriteLine($"{car.CarName} ({car.JPName} / {car.USName} / {car.EUName})"); output.WriteLine(); output.WriteLine("==Colors=="); if (car.Colours.Count > 1) { output.Write($"There are {GetNumber(car.Colours.Count)} colors"); } else { output.Write($"There is only one color"); } output.Write(" available for this vehicle"); bool hasColourNames = false; foreach (CarColour colour in car.Colours) { if (!string.IsNullOrWhiteSpace(colour.LatinName)) { hasColourNames = true; break; } } if (!hasColourNames) { if (car.Colours.Count > 1) { output.Write($", they are"); } else { output.Write($", it is"); } output.Write($" unnamed in-game"); } output.WriteLine($":"); foreach (CarColour colour in car.Colours) { CarColourWithName colourWithName = new CarColourWithName { CarName = car.CarName, ThumbnailColour = colour.ThumbnailColour, PaletteID = colour.PaletteID, JapaneseName = colour.JapaneseName, LatinName = colour.LatinName }; output.WriteLine($"*{{{{ColorSquare|{colour.HexColour}}}}}{(string.IsNullOrWhiteSpace(colour.LatinName) ? "" : " " + colour.LatinName)}"); } output.WriteLine(); output.WriteLine(); } } }