public void MovePassenger(Passenger passenger) { if (passenger.State == States.Waiting && Elevator.CurrentFloor == passenger.InitialFloor) { if (Elevator.TotalWeight + passenger.Weight < Elevator.MaxWeight) { passenger.State = States.Riding; Elevator.TotalWeight += passenger.Weight; PassengerGotIn?.Invoke(Elevator.CurrentFloor, passenger.name); UpdatePassengerData(); if (Elevator.ControlPanel.ClickedFloors[passenger.DeliveryFloor - 1] == false) { Elevator.ControlPanel.ClickedFloors[passenger.DeliveryFloor - 1] = true; ButtonPressed?.Invoke(passenger.DeliveryFloor); } } else { WeightAlert?.Invoke(); Overweight = true; } } else if (passenger.State == States.Waiting && (ClickedFloors[passenger.InitialFloor - 1] == false)) { ClickedFloors[passenger.InitialFloor - 1] = true; FloorButtonPressed?.Invoke(passenger.InitialFloor); } else if (passenger.State == States.Riding && Elevator.CurrentFloor == passenger.DeliveryFloor) { passenger.State = States.Delivered; Elevator.TotalWeight -= passenger.Weight; PassengerGotOut?.Invoke(Elevator.CurrentFloor); TotalDeliveredMassIncreased?.Invoke(passenger.Weight); UpdatePassengerData(); } }
public void OnFloorButtonPressed(int floorNumber) { FloorButtonPressed?.Invoke(this, floorNumber); }
public void TestInvokeFloorButtonPressedEvent(int floorNum) { FloorButtonPressed?.Invoke(this, floorNum); }