Beispiel #1
0
 /// <summary>
 /// de constructor van de call
 /// </summary>
 /// <param name="guest">De gast die de call maakt</param>
 /// <param name="start">de floor waar de gast staat</param>
 /// <param name="destination">de floor waar de gast naar toe moet</param>
 public ElevatorCallTemplate(AbstractHuman guest, ElevatorShaft start, ElevatorShaft destination)
 {
     //zet de juiste input in de juiste properties
     this.guest            = guest;
     this.startFloor       = start;
     this.destinationFloor = destination;
 }
Beispiel #2
0
        /// <summary>
        /// deze functie roep je aan als je omlaag moet
        /// </summary>
        private void GoDown()
        {
            //kijk in de buren van de huidige elevator shaft. neem dan de buur waar de Y positie -1 is van de huidige positie
            ElevatorShaft temp = (ElevatorShaft)currentPosition.Neighbours.FirstOrDefault(x => x.Key.PositionY == (currentPosition.PositionY - 1)).Key;

            //roep de move funvtie aan
            MoveElevator(temp);
        }
Beispiel #3
0
 /// <summary>
 /// roep deze functie aan as je de lift wilt laten bewegen
 /// </summary>
 /// <param name="nextFloor">geef de verdieping mee waar de lift de uiteindelijk moet uitkomen</param>
 private void GoToFloor(ElevatorShaft nextFloor)
 {
     //als de Y positie van de bestemming groter is dan de huidige Y positie ga dan naar boven
     if (currentPosition.PositionY < nextFloor.PositionY)
     {
         GoUp();
     }
     //als de Y positie avnde bestemming kleiner is dan de huideige Y positie ga dan naar beneden
     else if (currentPosition.PositionY < nextFloor.PositionY)
     {
         GoDown();
     }
     //als het geen van beide is dan betekend dat dat beide Y posities gelijk zijn verander dan de status naar "getOut"
     else
     {
         _status = State.getOut;
     }
 }
Beispiel #4
0
        /// <summary>
        /// een private function om de lift echt the laten bewegen
        /// </summary>
        /// <param name="nextFloor">geef de elevatorshaft mee die de volgende elevatorshaft is waar de lift langs komt</param>
        private void MoveElevator(ElevatorShaft nextFloor)
        {
            //zet in de current position vande lift de nieuwe shaft
            this.currentPosition = nextFloor;
            //verander de y positie van de lift zodat je de juiste positie kan tekenen
            this.PositionY = nextFloor.PositionY;

            //als er gasten zijn in de lift
            if (guestInElevator.Count > 0)
            {
                //voor elke gast in de lift
                foreach (AbstractHuman guest in guestInElevator)
                {
                    //zet de current position van de gast naar de volgende verdieping
                    guest.CurrentPosition = nextFloor;
                    //haal een stap van de path af van de gast
                    guest.Path.Remove(guest.Path.First());
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// Deze functie roep je aan als je het object wilt laten bewegen
        /// </summary>
        public void Move()
        {
            //als zijn huideige positie niet zijn bestemming is moet hij bewegen
            if (CurrentPosition != Destination)
            {
                //als hij nu bij een elevetarshaft staat en zijn volgende stap ook een elevator shaft is en hij staat nog niet in de lift
                if (CurrentPosition.AreaType == "Elevatorshaft" && Path.First().AreaType == "Elevatorshaft" && inElevator == false)
                {
                    //en hij is nog niet aan het wachten of de lift
                    if (waiting == false)
                    {
                        //maak een tijdelijke elevatorshaft object van de huidige positie
                        ElevatorShaft temp = (ElevatorShaft)CurrentPosition;

                        //voeg jezelf to aan de wacht rij van de elevatorshaft
                        temp.guestWaiting.Add(this);

                        //roep een functie aan om een call doortegeven aan de elevator
                        temp.CallElevator(new ElevatorCallTemplate(this, temp, (ElevatorShaft)Path.Find(x => x.AreaType == "Elevatorshaft" && x.PositionY == Destination.PositionY)));

                        //en geef aan dat hij nu moet wachten
                        waiting = true;
                    }
                }
                //anders moet hij zelf bewegen
                else
                {
                    //als hij nit in de lift staat
                    if (inElevator == false)
                    {
                        //verandrd de huidige positie
                        CurrentPosition = Path.First();
                        //en haal de stap uit de path list
                        Path.Remove(Path.First());
                    }
                }
            }
        }