public Elevator(IElevatorController elevatorControllerConnection, int elevatorID) { ID = elevatorID; CurFloor = 1; CurState = State.Idle; EPB = new ElevatorButtonPanel(elevatorID, elevatorControllerConnection); }
/// <summary> /// Find the nearest downward moving elevator for the requested floor number /// </summary> /// <param name="floorNumber"></param> /// <returns></returns> private IElevatorController GetClosestDownwardElevator(int floorNumber) { var downgoingElevators = _elevators.Where( x => (x.Status == ElevatorStatus.InFlight && x.Direction == Direction.Downward && x.CurrentFloorNumber > floorNumber) || (x.Status == ElevatorStatus.WaitingForInput && x.CurrentFloorNumber > floorNumber) ); IElevatorController downwardElevator = null; foreach (var e in downgoingElevators) { if (e.CurrentFloorNumber > floorNumber) { if ((downwardElevator != null && downwardElevator.CurrentFloorNumber > e.CurrentFloorNumber) || downwardElevator == null) { downwardElevator = e; } } } return(downwardElevator); }
/// <summary> /// Find the nearest upward moving elevator for the requested floor number /// </summary> /// <param name="floorNumber"></param> /// <returns></returns> private IElevatorController GetClosestUpwardElevator(int floorNumber) { var upwardElevators = _elevators.Where( x => (x.Status == ElevatorStatus.InFlight && x.Direction == Direction.Upward && x.CurrentFloorNumber < floorNumber) || (x.Status == ElevatorStatus.WaitingForInput && x.CurrentFloorNumber > floorNumber) ); IElevatorController upwardElevator = null; foreach (var e in upwardElevators) { if (e.CurrentFloorNumber < floorNumber) { if ((upwardElevator != null && upwardElevator.CurrentFloorNumber < e.CurrentFloorNumber) || upwardElevator == null) { upwardElevator = e; } } } return(upwardElevator); }
public ButtonPanel BuildButtonPanel(ElevatorDirection direction, IButtonCreator buttonCreator, IElevatorController elevatorController, IReservationSystem reservationSystem) { var newButtonPanel = new ButtonPanel { Direction = direction }; newButtonPanel.CreateButtons(buttonCreator, elevatorController.Floors); newButtonPanel.SetButtonEvents(reservationSystem, elevatorController); return newButtonPanel; }
public void SetButtonEvents(IReservationSystem reservations, IElevatorController elevatorController) { for (int i = 0; i < _buttonList.Count; i++) { int closedI = i; Button b = _buttonList[i]; b.Click += (sender, args) => reservations.PlaceReservation(closedI, Direction); IReservation reservation = new Reservation { Direction = Direction, FloorIndex = closedI }; b.Click += (sender, args) => elevatorController.HandleButtonPressed(this, new ItemEventArgs<IReservation>(reservation)); } reservations.ReservationPlaced += HandleReservationPlaced; reservations.ReservationRemoved += HandleReservationRemoved; }
private static void TakeInput(IElevatorController liftController) { while (true) { if (Console.ReadKey().Key == ConsoleKey.S) { var direction = Direction.Up; if (_random.Next(0, 100) > 50) { direction = Direction.Down; } liftController.SummonButtonPushed(_random.Next(0, _floorCount), direction); } if (Console.ReadKey().Key == ConsoleKey.F) { liftController.FloorButtonPushed(_random.Next(0, _floorCount)); } } }
public FloorButtonPanel(IElevatorController elevatorControllerConnection, int floor) { Floor = floor; _ecc = elevatorControllerConnection; }
public Elevator(int topFloorNumber, int bottomFloorNumber, IElevatorController elevatorController) { _topFloorNumber = topFloorNumber; _bottomFloorNumber = bottomFloorNumber; ElevatorController = elevatorController; }
public ElevatorButtonPanel(int id, IElevatorController elevatorControllerConection) { _ecc = elevatorControllerConection; _id = id; }