示例#1
0
        // Request an elevator to current location (if current location is not RC)
        public void RequestElevator(int floorNumber)
        {
            var      callBtnToPress = CallButtonsList.Find(btn => btn.Floor == floorNumber);
            Elevator chosenElevator = callBtnToPress.Press();

            // Do requests until elevator has reached the final destination (RC)
            while (chosenElevator.CurrentFloor != Elevator.OriginFloor)
            {
                chosenElevator.DoRequests();
            }
        }
        // Assigns a column and elevator to use when making a request from RC via the board buttons
        public void AssignElevator(int requestedFloor)
        {
            var      boardBtnToPress = BoardButtonList.Find(btn => btn.RequestedFloor == requestedFloor);
            Elevator chosenElevator  = boardBtnToPress.Press();

            // Do requests until elevator has reached the floor where the call was made (RC floor)
            while (chosenElevator.CurrentFloor != Elevator.OriginFloor)
            {
                chosenElevator.DoRequests();
            }

            // Set a request for the elevator to go to requested floor, once picked up
            string newDirection = (chosenElevator.CurrentFloor < requestedFloor) ? "up" : "down";

            chosenElevator.SendRequest(requestedFloor, newDirection);

            // Do requests until elevator has reached requested floor
            while (chosenElevator.CurrentFloor != requestedFloor)
            {
                chosenElevator.DoRequests();
            }
        }