public MasterControllerImpl()
        {
            //initialising the values from the .dll database
            numofAirports = dllDatabase.GetNumAirports();
            airportIDList = dllDatabase.GetAirportIDList();

            //initialising appropiate objects for every entry in airportIDList
            foreach (int airportID in airportIDList)
            {
                //retrieve a list of airplanes for each airport ID
                int[] landedlist = dllDatabase.GetAirplaneIDsForAirport(airportID);

                Queue <Airplane> landedQueue = new Queue <Airplane>();

                //for each airplane in landed list create an airplane object
                foreach (int planeID in landedlist)
                {
                    string type;
                    double kmph;
                    double consume;
                    int    currentAirportID;

                    //retrieving data from dll database into variables
                    dllDatabase.LoadAirplane(planeID, out type, out kmph, out consume, out currentAirportID);

                    //creating an storing airplane object in queue
                    landedQueue.Enqueue(new Airplane(planeID, type, kmph, consume, currentAirportID));
                }


                //retrieve a list of departure air routes for each airport ID
                int[] routelist = dllDatabase.GetDepartingAirRouteIDsForAirport(airportID);

                Queue <AirRoute> routeQueue = new Queue <AirRoute>();

                //for each air route in routelist create an AirRoute object
                foreach (int routeID in routelist)
                {
                    int    fromID;
                    int    toID;
                    double routeDistance;

                    //retrieving data from dll database into variables
                    dllDatabase.LoadAirRoute(routeID, out fromID, out toID, out routeDistance);

                    //creating an storing airplane object in queue
                    routeQueue.Enqueue(new AirRoute(routeID, fromID, toID, routeDistance));
                }

                //using above queues create and object for the airport
                string AirportName;
                dllDatabase.LoadAirport(airportID, out AirportName);
                availableAirportQueue.Enqueue(new Airport(airportID, AirportName, landedQueue, routeQueue));
                Console.WriteLine(airportID + AirportName);
            }
        }
Exemplo n.º 2
0
        //Get the airplanes from the database.
        public List <Airplane> GetAirplanes(int airportID)
        {
            List <Airplane> planes = new List <Airplane>();

            int[]  airplaneIDs = m_db.GetAirplaneIDsForAirport(airportID); //List of airplane ID's.
            string planeType;                                              //Variables to store outs.
            int    startID;
            double cruisingSpeed, fuelCons;

            foreach (int id in airplaneIDs) //Populate planes list.
            {
                m_db.LoadAirplane(id, out planeType, out cruisingSpeed, out fuelCons, out startID);
                planes.Add(new Airplane(id, planeType, cruisingSpeed, fuelCons, startID));
            }
            return(planes);
        }
        /// <summary>
        /// Load the database into Airport/Airplane/Airroute objects
        /// </summary>
        private void Initialise()
        {
            try
            {
                //initialise objects
                m_SimTime = 0;
                int[] airportList;
                m_airports = new List<Airport>();
                m_airportAllocationQueue = new Queue<Airport>();

                //create new database object
                ATCDatabase.ATCDB initialDB = new ATCDatabase.ATCDB();

                //get number of airports
                m_numAirports = initialDB.GetNumAirports();

                //get list of airports
                airportList = initialDB.GetAirportIDList();

                //iterate through each airport and get all the data associated with the airport and instanciate those objects
                foreach (int airportID in airportList)
                {
                    //declarations
                    string airportName;
                    int[] airplaneList, airRouteList;
                    Queue<Airplane> landedList = new Queue<Airplane>();
                    Queue<AirRoute> departingRoutes = new Queue<AirRoute>();
                    List<AirRoute> incomingRoutes = new List<AirRoute>();

                    //get all airplane ids in current airport
                    airplaneList = initialDB.GetAirplaneIDsForAirport(airportID);

                    //get all the departing AirRoutes for the airport
                    airRouteList = initialDB.GetDepartingAirRouteIDsForAirport(airportID);

                    //go through each airplane, get it's info and construct the object
                    foreach (int airplaneID in airplaneList)
                    {
                        string planeType;
                        double cruisingKPH, fuelConsPerHour;
                        int initAirportID;
                        initialDB.LoadAirplane(airplaneID, out planeType, out cruisingKPH, out fuelConsPerHour, out initAirportID);
                        landedList.Enqueue(new Airplane(airplaneID, planeType, cruisingKPH, fuelConsPerHour, airportID));
                    }

                    //go through each departing AirRoute and construct the AirRoute object
                    foreach (int airRouteID in airRouteList)
                    {
                        int fromAirportID, toAirportID;
                        double distanceKM;
                        initialDB.LoadAirRoute(airRouteID, out fromAirportID, out toAirportID, out distanceKM);
                        departingRoutes.Enqueue(new AirRoute(airRouteID, fromAirportID, toAirportID, distanceKM));
                    }

                    //go through each airport, get all the departing AirRoutes and if the destination is the current airport
                    //then add it to the incomingRoutes list
                    foreach (int id in airportList)
                    {
                        int[] routeList = initialDB.GetDepartingAirRouteIDsForAirport(id);
                        foreach (int airRouteID in routeList)
                        {
                            int fromAirportID, toAirportID;
                            double distanceKM;
                            initialDB.LoadAirRoute(airRouteID, out fromAirportID, out toAirportID, out distanceKM);
                            if (toAirportID == airportID)
                            {
                                incomingRoutes.Add(new AirRoute(airRouteID, fromAirportID, toAirportID, distanceKM));
                            }
                        }

                    }

                    //finally load the airport name and then add it to the list of airports to be allocated
                    initialDB.LoadAirport(airportID, out airportName);
                    m_airportAllocationQueue.Enqueue(new Airport(airportID, airportName, landedList, departingRoutes, incomingRoutes));
                }
            }
            catch (Exception exception)
            {
                System.Console.WriteLine(exception.Message);
                Initialise();
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Load the database into Airport/Airplane/Airroute objects
        /// </summary>
        private void Initialise()
        {
            try
            {
                //initialise objects
                m_SimTime = 0;
                int[] airportList;
                m_airports = new List <Airport>();
                m_airportAllocationQueue = new Queue <Airport>();

                //create new database object
                ATCDatabase.ATCDB initialDB = new ATCDatabase.ATCDB();

                //get number of airports
                m_numAirports = initialDB.GetNumAirports();

                //get list of airports
                airportList = initialDB.GetAirportIDList();

                //iterate through each airport and get all the data associated with the airport and instanciate those objects
                foreach (int airportID in airportList)
                {
                    //declarations
                    string           airportName;
                    int[]            airplaneList, airRouteList;
                    Queue <Airplane> landedList      = new Queue <Airplane>();
                    Queue <AirRoute> departingRoutes = new Queue <AirRoute>();
                    List <AirRoute>  incomingRoutes  = new List <AirRoute>();

                    //get all airplane ids in current airport
                    airplaneList = initialDB.GetAirplaneIDsForAirport(airportID);

                    //get all the departing AirRoutes for the airport
                    airRouteList = initialDB.GetDepartingAirRouteIDsForAirport(airportID);

                    //go through each airplane, get it's info and construct the object
                    foreach (int airplaneID in airplaneList)
                    {
                        string planeType;
                        double cruisingKPH, fuelConsPerHour;
                        int    initAirportID;
                        initialDB.LoadAirplane(airplaneID, out planeType, out cruisingKPH, out fuelConsPerHour, out initAirportID);
                        landedList.Enqueue(new Airplane(airplaneID, planeType, cruisingKPH, fuelConsPerHour, airportID));
                    }

                    //go through each departing AirRoute and construct the AirRoute object
                    foreach (int airRouteID in airRouteList)
                    {
                        int    fromAirportID, toAirportID;
                        double distanceKM;
                        initialDB.LoadAirRoute(airRouteID, out fromAirportID, out toAirportID, out distanceKM);
                        departingRoutes.Enqueue(new AirRoute(airRouteID, fromAirportID, toAirportID, distanceKM));
                    }

                    //go through each airport, get all the departing AirRoutes and if the destination is the current airport
                    //then add it to the incomingRoutes list
                    foreach (int id in airportList)
                    {
                        int[] routeList = initialDB.GetDepartingAirRouteIDsForAirport(id);
                        foreach (int airRouteID in routeList)
                        {
                            int    fromAirportID, toAirportID;
                            double distanceKM;
                            initialDB.LoadAirRoute(airRouteID, out fromAirportID, out toAirportID, out distanceKM);
                            if (toAirportID == airportID)
                            {
                                incomingRoutes.Add(new AirRoute(airRouteID, fromAirportID, toAirportID, distanceKM));
                            }
                        }
                    }

                    //finally load the airport name and then add it to the list of airports to be allocated
                    initialDB.LoadAirport(airportID, out airportName);
                    m_airportAllocationQueue.Enqueue(new Airport(airportID, airportName, landedList, departingRoutes, incomingRoutes));
                }
            }
            catch (Exception exception)
            {
                System.Console.WriteLine(exception.Message);
                Initialise();
            }
        }