示例#1
0
 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();
     }
 }
示例#2
0
 public void OnFloorButtonPressed(int floorNumber)
 {
     FloorButtonPressed?.Invoke(this, floorNumber);
 }
示例#3
0
 public void TestInvokeFloorButtonPressedEvent(int floorNum)
 {
     FloorButtonPressed?.Invoke(this, floorNum);
 }