public void Transported(Person person) { PersonsList.Remove(person); CurrentWeight -= person.Weight; NumTransported++; TotalWeight += person.Weight; CarryFloor -= person.UpdateStatusFromElevator; AddFloor -= person.AddFloor; EventOpenDoors -= person.GetOffTheElevator; UpdateTransported?.Invoke(CurrentWeight); }
public void CloseDoors() { Status = "Close doors"; UpdateStatus?.Invoke(Status); Thread.Sleep(2500); UpdateTransported?.Invoke(CurrentWeight); if (ElevatorList.Count == 0 && CurrentWeight == 0) { Wait(); } else if (CurrentWeight == 0) { GoEmtyToCall(); } else if (ElevatorList[0] > CurrentFloor) { CarryUp(); } else if (ElevatorList[0] < CurrentFloor) { CarryDown(); } }
private void CheckMode() { DataBase.IsClosed = false; StandTime = new Time(0, 2, 0, 0); Status = "Check mode"; UpdateStatus?.Invoke(Status); if (!DataBase.Overload) { EventOpenDoors?.Invoke(CurrentFloor); } UpdateTransported?.Invoke(CurrentWeight); if (DataBase.IsClosed && CurrentWeight >= MaxWeight) { DataBase.IsClosed = false; Signal(); } else if (!DataBase.IsClosed) { DataBase.Overload = false; Thread.Sleep(StandTime.Sec * 1000); } CloseDoors(); }