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(); } }
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); } } }
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(); }