private bool CanEnterFloor(BaseAgent agent, FloorType floor) { switch (agent.SecurityLevel) { case SecurityLevel.Confidential: if (floor == FloorType.GroundFloor) { return(true); } else { return(false); } case SecurityLevel.Secret: if (floor == FloorType.GroundFloor || floor == FloorType.SecretExperimentalFloor) { return(true); } else { return(false); } case SecurityLevel.TopSecret: return(true); default: Console.WriteLine("Something maybe went wrong."); return(false); } }
public void LeaveElevator(BaseAgent agent) { _semaphore.Release(); Console.WriteLine($"{agent.Name} has left the elevator."); agent.DoSomethingOnTheFloor(CurrentFloor); }
public void EnterElevator(BaseAgent agent, FloorType currentFloor, FloorType desiredFloor) { _semaphore.WaitOne(); Agent = agent; Console.WriteLine($"{agent.Name} entered the elevator."); ChooseFloor(currentFloor); }