Parking/Assets/Scripts/DataImporter.cs

76 lines
2.7 KiB
C#
Raw Normal View History

2022-09-01 22:31:57 +02:00
using System;
2022-08-25 18:38:38 +02:00
using System.Collections.Generic;
2022-09-01 22:31:57 +02:00
using System.Globalization;
using System.IO;
2022-09-01 22:31:57 +02:00
using System.Runtime.Serialization;
2022-09-04 00:35:45 +02:00
using Unity.VisualScripting;
2022-09-01 22:31:57 +02:00
using UnityEngine;
2022-08-25 18:38:38 +02:00
namespace Parking
2022-08-25 18:38:38 +02:00
{
public class DataImporter
2022-08-25 18:38:38 +02:00
{
public static List<Driver> Drivers = new();
public static void ReadFile(string path)
2022-08-25 18:38:38 +02:00
{
var fileData = File.ReadAllText(path);
var lines = fileData.Split("\n"[0]);
var counter = 0;
foreach (var line in lines)
2022-08-25 18:38:38 +02:00
{
2022-09-04 00:35:45 +02:00
if(line == "")
continue;
if (counter == 0)
{
counter++;
continue;
}
var lineData = line.Trim().Split(',');
var preference = lineData[0] == ""
? ParkingPreference.Any
2022-09-04 00:35:45 +02:00
: lineData[1] == "P"
? ParkingPreference.Front
: ParkingPreference.Back;
Size size;
2022-09-04 00:35:45 +02:00
switch (lineData[2])
{
case "Mały":
size = Size.A;
break;
case "Średni":
size = Size.B;
break;
case "Duży":
size = Size.C;
break;
case "Max":
size = Size.D;
break;
default:
size = Size.A;
break;
}
2022-09-04 00:35:45 +02:00
DateTime realArrival = DateTime.Parse(lineData[5].Contains(':') ? lineData[5] : lineData[5] + ":00", CultureInfo.InvariantCulture);
DateTime realDeparture = DateTime.Parse(lineData[6].Contains(':') ? lineData[6] : lineData[6] + ":00", CultureInfo.InvariantCulture);
DateTime plannedArrival = DateTime.Parse(lineData[3].Contains(':') ? lineData[3] : lineData[3] + ":00", CultureInfo.InvariantCulture);
DateTime plannedDeparture = DateTime.Parse(lineData[4].Contains(':') ? lineData[4] : lineData[4] + ":00", CultureInfo.InvariantCulture);
if (!Int32.TryParse(lineData[0], out var priority))
priority = 3;
2022-09-01 22:31:57 +02:00
2022-09-04 00:35:45 +02:00
if (!Int32.TryParse(lineData[7], out var updateInterval))
updateInterval = 3;
Driver driver = new Driver(size, counter, preference, priority, updateInterval);
driver.Times = new[] {plannedArrival, plannedDeparture, realArrival, realDeparture};
2022-09-01 22:31:57 +02:00
Drivers.Add(driver);
2022-08-25 18:38:38 +02:00
counter++;
}
}
}
}