Beispiel #1
0
 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++;
             }
         }
     }
 }
Beispiel #2
0
 public void DecreaseRemainingDaysInHarbour()
 {
     BoatsInHarbour.RemoveAll(b => b.DaysRemaining == 1);
     BoatsInHarbour.ForEach(b => b.DaysRemaining--);
 }