Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        public void LeaveElevator(BaseAgent agent)
        {
            _semaphore.Release();

            Console.WriteLine($"{agent.Name} has left the elevator.");

            agent.DoSomethingOnTheFloor(CurrentFloor);
        }
Beispiel #3
0
        public void EnterElevator(BaseAgent agent, FloorType currentFloor, FloorType desiredFloor)
        {
            _semaphore.WaitOne();

            Agent = agent;

            Console.WriteLine($"{agent.Name} entered the elevator.");

            ChooseFloor(currentFloor);
        }