Exemple #1
0
        /// <summary>
        /// Zoekt vrije sectors waar de tram (qua lengte) op kan staan
        /// </summary>
        /// <param name="spoor">spoor waarin sectoren gezocht moeten worden</param>
        /// <param name="tram">tram die geplaatst moet worden</param>
        /// <returns></returns>
        private List <Sector> vrijeSectoren(Spoor spoor, Tram tram, int beginsectornummer, bool reverse)
        {
            List <Sector> spoorSectors = RemiseManager.sectorenVanSpoor(spoor.Id);
            List <Sector> sectors      = new List <Sector>();

            if (reverse)
            {
                spoorSectors.Reverse();          // Reverse list, zodat de tram eerst op de achterste sectoren v/h spoor komt te staan
            }
            foreach (Sector s in spoorSectors)
            {
                if (s.Blokkade)
                {
                    sectors.Clear();
                }
                if (sectors.Count < tram.lengte)
                {
                    if (s.Beschikbaar && !s.Blokkade && s.Tram == null && s.Nummer >= beginsectornummer)
                    {
                        sectors.Add(s);
                    }
                    else
                    {
                        sectors.Clear();
                    }
                }
            }

            return(sectors);
        }
Exemple #2
0
        public string DeelTramInOpSector(Tram tram, Sector sector)
        {
            List <Sector> vrijeSpoorSectors = null;
            List <Sector> ingedeeldeSectors = new List <Sector>();

            Sector beginSector    = sector;
            Spoor  spoorvanSector = RemiseManager.spoorViaId(sector.SpoorNummer);

            if (beginSector != null)
            {
                if (!beginSector.Blokkade)
                {
                    if (beginSector.Beschikbaar)
                    {
                        if (spoorvanSector.SectorList.Count() - beginSector.Nummer >= tram.lengte)
                        {
                            //Ok up to here
                            vrijeSpoorSectors = vrijeSectoren(spoorvanSector, tram, beginSector.Nummer, true);
                            foreach (Sector s in vrijeSpoorSectors)
                            {
                                if (s.Nummer >= sector.Nummer)
                                {
                                    ingedeeldeSectors.Add(s);
                                }
                            }
                            foreach (Sector s in ingedeeldeSectors)
                            {
                                if (s.Nummer < 30)
                                {
                                    ingedeeldeSectors = null;
                                    return("Sector is schoonmaak of reparatie-sector.");
                                }
                            }
                            if (ingedeeldeSectors.Count() < tram.lengte)
                            {
                                ingedeeldeSectors = null;
                                return("niet genoeg vrije sectoren");
                            }
                            if (ingedeeldeSectors != null && ingedeeldeSectors.Any())
                            {
                                voegTramAanSectorsToe(ingedeeldeSectors, tram, true);
                                return("Tram toegevoegd.");
                            }
                        }
                        else
                        {
                            return("niet genoeg sectoren op spoor.");
                        }
                    }
                }
                else
                {
                    return("Sector geblokkeerd");
                }
            }
            return("Sector niet gevonden");
        }
Exemple #3
0
 public static Sector sectorViaNummer(int nummer, Spoor spoor)
 {
     foreach (Sector sector in spoor.SectorList)
     {
         if (sector.Nummer == nummer)
         {
             return(sector);
         }
     }
     return(null);
 }
Exemple #4
0
        /// <summary>
        /// Functie met algoritme waarmee de tram ingedeeld wordt op een spoor(/op sectoren)
        /// </summary>
        /// <param name="tram">tram die ingedeeld moet worden</param>
        /// <returns>Lijst met sectoren waarop de tram is ingedeeld</returns>
        public List <Sector> DeelTramIn(Tram tram)
        {
            /* if (tram.nummer == 834)
             * {
             *   //breakpoint
             * } */
            VerwijderSchoonmaakReparatieSporen();
            List <Sector> ingedeeldeSectors = null;
            bool          sectorFound       = false;

            while (!sectorFound)
            {
                if (sporenOp)
                {
                    return(null);          // anders ingedeeldesectors = null en sectorFound = true;
                }
                Spoor ingedeeldSpoor = krijgEerstVolgendeSpoor();
                if (ingedeeldSpoor != null)
                {
                    if (isSpoorBeschikbaar(ingedeeldSpoor))
                    {
                        if (isSpoorLangGenoeg(ingedeeldSpoor, tram.lengte))
                        {
                            ingedeeldeSectors = vrijeSectoren(ingedeeldSpoor, tram, 1, true);
                            if (ingedeeldeSectors.Count() < tram.lengte)
                            {
                                ingedeeldeSectors = null;
                            }
                            if (ingedeeldeSectors != null && ingedeeldeSectors.Any())
                            {
                                sectorFound = true;
                                voegTramAanSectorsToe(ingedeeldeSectors, tram, false);
                            }
                        }
                        else
                        {
                            spoorTeller++;
                            increaseTeller = true;
                        }
                    }
                }
            }
            if (increaseTeller)
            {
                spoorTeller = 0;
            }
            return(ingedeeldeSectors);
        }
Exemple #5
0
 /// <summary>
 /// Kijkt of het spoor lang genoeg is voor de tram
 /// </summary>
 /// <param name="spoor">spoor dat gecontroleerd moet worden</param>
 /// <param name="lengte">lengte van de tram</param>
 /// <returns>true als het spoor lang genoeg is</returns>
 private bool isSpoorLangGenoeg(Spoor spoor, int lengte)
 {
     Console.WriteLine("lengte: " + lengte + " SpoorLengte: " + spoor.SectorList.Count());
     return(lengte <= spoor.SectorList.Count);
 }
Exemple #6
0
 /// <summary>
 /// Controleert of het spoor beschikbaar is
 /// </summary>
 /// <param name="spoor">spoor dat gecontroleerd moet worden</param>
 /// <returns>true als het spoor beschikbaar is</returns>
 private bool isSpoorBeschikbaar(Spoor spoor)
 {
     return(spoor.Beschikbaar);
 }
Exemple #7
0
 public Reservering(int id, Tram tram, Spoor spoor)
 {
     Id    = id;
     Tram  = tram;
     Spoor = spoor;
 }