public void AddBoatsToHarbour(List <Boat> arrivingBoats) { foreach (var arrivingBoat in arrivingBoats) { var prevBoatEnd = 0; var boatDocked = false; // Check if arriving boat fits between existing boats foreach (var dockedBoat in BoatsInHarbour) { if (CheckBoatFits(prevBoatEnd, dockedBoat.DockingPlace.Start, arrivingBoat.DockSize)) { BoatsInHarbour.Add(SetDockingPlace(prevBoatEnd, arrivingBoat)); BoatsInHarbour = BoatsInHarbour.OrderBy(b => b.DockingPlace.Start).ToList(); boatDocked = true; break; } else { prevBoatEnd = dockedBoat.DockingPlace.End; } } // Check if arriving boat fits after existing boats if (!boatDocked) { if (CheckBoatFits(prevBoatEnd, (DockSize + 1), arrivingBoat.DockSize)) { BoatsInHarbour.Add(SetDockingPlace(prevBoatEnd, arrivingBoat)); } else { NrRejectedBoats++; } } } }
public void DecreaseRemainingDaysInHarbour() { BoatsInHarbour.RemoveAll(b => b.DaysRemaining == 1); BoatsInHarbour.ForEach(b => b.DaysRemaining--); }