Reservation reset fix

This commit is contained in:
Dawid Pietrykowski 2022-09-04 12:47:46 +02:00
parent f26a570c93
commit 85dd77265d

View File

@ -54,6 +54,12 @@ namespace Parking
private void ReserveInitialSpots() 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++) { for (var i = 0; i < Math.Min(DataImporter.Drivers.Count, _initialConfigurationSpotCount); i++) {
bool found = false; bool found = false;
// Find spot // Find spot
@ -80,7 +86,7 @@ namespace Parking
_currentTime += TimeSpan.FromMinutes(stepTime); _currentTime += TimeSpan.FromMinutes(stepTime);
if (_currentTime > EndTime) { if (_currentTime > EndTime) {
_currentTime = StartTime; _currentTime = StartTime;
// TODO: Reset spot reservations ReserveInitialSpots();
ResetDrivers(); ResetDrivers();
_rejectedDrivers = new[] {0, 0, 0, 0}; _rejectedDrivers = new[] {0, 0, 0, 0};
rejectedText.text = $"Małe: {_rejectedDrivers[0]} Średnie: {_rejectedDrivers[1]} " + rejectedText.text = $"Małe: {_rejectedDrivers[0]} Średnie: {_rejectedDrivers[1]} " +
@ -93,7 +99,7 @@ namespace Parking
foreach (Driver driver in DataImporter.Drivers) { 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 triesToPark = _currentTime <= driver.Times[3].TimeOfDay && _currentTime > driver.Times[2].TimeOfDay;
var leftTheParking = _currentTime > driver.Times[3].TimeOfDay && driver.Parked; var leftTheParking = _currentTime > driver.Times[3].TimeOfDay && driver.Parked;
if (triesToPark && !driver.Parked && !driver.Rejected) { if (triesToPark && !driver.Parked && !driver.Rejected) {
@ -114,8 +120,13 @@ namespace Parking
private void ResetDrivers() 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(); driver.Reset();
}
} }
private bool FindReservedSpot(Driver driver, out Spot spot) private bool FindReservedSpot(Driver driver, out Spot spot)
@ -150,6 +161,7 @@ namespace Parking
(spot.ParkingDirection == driver.ParkingPreference || (spot.ParkingDirection == driver.ParkingPreference ||
spot.ParkingDirection == ParkingPreference.Any) spot.ParkingDirection == ParkingPreference.Any)
&& !spot.Reserved; && !spot.Reserved;
if (spotAvailable) { if (spotAvailable) {
PlaceDriverOnSpot(driver, spot); PlaceDriverOnSpot(driver, spot);
return true; return true;