diff --git a/Assets/Scripts/ParkingManager.cs b/Assets/Scripts/ParkingManager.cs index 6146805..1bed5d1 100644 --- a/Assets/Scripts/ParkingManager.cs +++ b/Assets/Scripts/ParkingManager.cs @@ -54,6 +54,12 @@ namespace Parking private void ReserveInitialSpots() { + for (var j = 3; j >= 0; j--) + foreach (Spot spot in _spotMap[j]) { + spot.Reserved = false; + spot.ReservedPriority = 0; + } + for (var i = 0; i < Math.Min(DataImporter.Drivers.Count, _initialConfigurationSpotCount); i++) { bool found = false; // Find spot @@ -80,7 +86,7 @@ namespace Parking _currentTime += TimeSpan.FromMinutes(stepTime); if (_currentTime > EndTime) { _currentTime = StartTime; - // TODO: Reset spot reservations + ReserveInitialSpots(); ResetDrivers(); _rejectedDrivers = new[] {0, 0, 0, 0}; rejectedText.text = $"Małe: {_rejectedDrivers[0]} Średnie: {_rejectedDrivers[1]} " + @@ -93,7 +99,7 @@ namespace Parking foreach (Driver driver in DataImporter.Drivers) { - // TODO: Check if car can stay before other reservation + // TODO: Check if car can stay before other reservation - may not work for priority-based reservations var triesToPark = _currentTime <= driver.Times[3].TimeOfDay && _currentTime > driver.Times[2].TimeOfDay; var leftTheParking = _currentTime > driver.Times[3].TimeOfDay && driver.Parked; if (triesToPark && !driver.Parked && !driver.Rejected) { @@ -114,8 +120,13 @@ namespace Parking private void ResetDrivers() { - foreach (Driver driver in DataImporter.Drivers) + foreach (Driver driver in DataImporter.Drivers){ + if (driver.Spot != null) { + driver.Spot.Reserved = false; + driver.Spot.ReservedPriority = 0; + } driver.Reset(); + } } private bool FindReservedSpot(Driver driver, out Spot spot) @@ -150,6 +161,7 @@ namespace Parking (spot.ParkingDirection == driver.ParkingPreference || spot.ParkingDirection == ParkingPreference.Any) && !spot.Reserved; + if (spotAvailable) { PlaceDriverOnSpot(driver, spot); return true;