Exemplo n.º 1
0
 public void EnterTheElevator(int floor)
 {
     if (CurrentFloor == floor && Status == "Called the elevator")
     {
         Status = "Entered the elevator";
         if (DataBase.CurrentId == Id)
         {
             UpdateStatus?.Invoke(Status);
         }
         UpdateFloorList?.Invoke(CurrentFloor, Id, false);
         Thread.Sleep(1000);
         if (Entered != null && !Entered(this, DestinationFloor))
         {
             ChooseFloor();
         }
         Check();
     }
 }
Exemplo n.º 2
0
 public void GetOffTheElevator(int floor)
 {
     if (DestinationFloor == floor && (Status == "Moving up" || Status == "Moving down"))
     {
         Status = "Get off the elevator";
         if (DataBase.CurrentId == Id)
         {
             UpdateStatus?.Invoke(Status);
         }
         UpdateFloorList?.Invoke(CurrentFloor, Id, true);
         Transported?.Invoke(this);
         Thread.Sleep(5000);
         Status = "Deleted";
         UpdateFloorList?.Invoke(CurrentFloor, Id, false);
         DeathTime = DataBase.Time - BirthdayTime;
         if (DataBase.CurrentId == Id)
         {
             UpdateStatus?.Invoke(Status);
         }
     }
 }
Exemplo n.º 3
0
        private void Signal()
        {
            Status = "Signal Overload";
            UpdateStatus?.Invoke(Status);
            Thread.Sleep(2500);
            while (CurrentWeight > MaxWeight)
            {
                CurrentWeight -= PersonsList[PersonsList.Count - 1].Weight;
                PersonsList[PersonsList.Count - 1].Status = "Get off the elevator";
                Thread.Sleep(1000);
                PersonsList[PersonsList.Count - 1].Status = "Called the elevator";
                UpdateElevatorList(CurrentFloor, PersonsList[PersonsList.Count - 1].Status);
                CarryFloor     -= PersonsList[PersonsList.Count - 1].UpdateStatusFromElevator;
                AddFloor       -= PersonsList[PersonsList.Count - 1].AddFloor;
                EventOpenDoors -= PersonsList[PersonsList.Count - 1].GetOffTheElevator;
                EventOpenDoors += PersonsList[PersonsList.Count - 1].EnterTheElevator;
                PersonsList.RemoveAt(PersonsList.Count - 1);
                UpdateFloorList?.Invoke(PersonsList[PersonsList.Count - 1].CurrentFloor, PersonsList[PersonsList.Count - 1].Id, true);
            }

            DataBase.IsClosed = false;
            DataBase.Overload = true;
            CheckMode();
        }