Exemplo n.º 1
0
        public Elevator findElevator(int requestedFloor, int floorNumber, string direction, int userPosition, int elevatorCurrentFloor)
        {
            int bestCase = 0;

            Elevator bestElevator = null;

            if (Battery.findColumn(requestedFloor,floorNumber).bestColumn =[0])
            {
                foreach (Elevator i in elevatorList)   
                {
                    if (requestedFloor < 7 && direction == "down" && elevatorCurrentFloor == 7 || floorNumber == 7 && direction == "up" && elevatorCurrentFloor <= userPosition)
                    {
                        bestCase = 4;
                        bestElevator = i;
                    }
                    else if (requestedFloor < 7 && direction == "idle" && elevatorCurrentFloor == 7 || floorNumber == 7 && direction == "idle " && elevatorCurrentFloor == userPosition)
                    {
                        if (bestCase < 3)
                        {
                            bestCase = 3;
                            bestElevator = i;
                        }       
                    }
                    else if (requestedFloor < 7 && direction == "idle " && elevatorCurrentFloor != 7 || floorNumber == 7 && direction == "idle" && elevatorCurrentFloor != userPosition)
                    {
                        if (bestCase < 2)
                        {
                            bestCase = 2;
                            bestElevator = i;
                        }
                        
                    }    
                    else
                    {
                        if (bestCase < 1)
                        {
                            bestCase = 1;
                            bestElevator = i;
                        }
                    }
                }
            }
            else
            {
                foreach (Elevator i in elevatorList)
                {
                    if (requestedFloor > 7 && direction == "up" && elevatorCurrentFloor == 7 || floorNumber == 7 && direction == "down" && elevatorCurrentFloor >= userPosition)
                    {
                        bestCase = 4;
                        bestElevator = i;
                    }
                    else if (requestedFloor > 7 && direction == "idle" && elevatorCurrentFloor == 7 || floorNumber == 7 && direction == "idle " && elevatorCurrentFloor == userPosition)
                    {
                        if (bestCase < 3)
                        {
                            bestCase = 3;
                            bestElevator = i;
                        }  
                    }
                    else if (requestedFloor > 7 && direction == "idle " && elevatorCurrentFloor != 7 || floorNumber == 7 && direction == "idle" && elevatorCurrentFloor != userPosition)
                    {
                        if (bestCase < 2)
                        {
                            bestCase = 2;
                            bestElevator = i;
                        }
                    }
                    else
                    {
                        if (bestCase < 1)
                        {
                            bestCase = 1;
                            bestElevator = i;
                        }
                    }
                }
            }
            return bestElevator;
        }