public void ProcessRequest(int requestedFloor) { RequestedFloorQueue.Enqueue(requestedFloor); FloorsStopMap[requestedFloor] = true; ElevatorButtons.FirstOrDefault(btn => btn.ButtonID == requestedFloor); if (!Timer.Enabled) { Start(); } }
public void Halt() { Timer.Interval = (HaltTime + CrossTime) * 1000; FloorsStopMap[CurrentFloorNo] = false; var extraHalt = Utility.RandomNumber(0, 1); /* Randomly select extra halt, 0 means no extra halt, 1 means halt for extra time */ if (this.ElevatorID == "E1") { extraHalt = 1; } if (extraHalt == 1) { var extraHaltTime = Utility.RandomNumber(10, 20); /* how many seconds it halts */ Timer.Interval = (HaltTime + CrossTime + extraHaltTime) * 1000; Console.WriteLine("The Elevator {0} is halt on the floor number {1} for {2} seconds", ElevatorID, CurrentFloorNo, Timer.Interval / 1000); } else { Timer.Interval = (HaltTime + CrossTime) * 1000; Console.WriteLine("The Elevator {0} is halt on the floor number {1} for {2} seconds", ElevatorID, CurrentFloorNo, HaltTime); } var isButtonPressed = Utility.RandomNumber(0, 1); /* Does the person wants to press any button inside elevtor , 0 means no, 1 means yes */ if (isButtonPressed == 1) { var pressedButtonNo = Utility.RandomNumber(Utility.BottomFloorID, Utility.TopFloorID); var button = ElevatorButtons.FirstOrDefault(btn => btn.ButtonID == pressedButtonNo); button.ISPressed = true; if (ButtonPressed != null) { ButtonPressed(button, new ButtonEventArgs(pressedButtonNo)); } } this.Stop(); }