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
        //Create airports to offload.
        public void Initialize()
        {
            try
            {
                int numAirports = m_db.GetNumAirports();    //Determine how many airports in system.
                airportsOffloaded = 0;                      //Number of airports to offload.
                int[] airportIDs = m_db.GetAirportIDList(); //Get list of airport ids. (1 based, not 0 based).
                m_airports  = new Airport[numAirports];     //Initialize airport and callback object arrays to number of airports.
                m_ATCSlaves = new IATCBizControllerMasterCallback[numAirports];
                string airportName;                         //Stores out value of airport name from database.

                foreach (int id in airportIDs)              //Create each Airport.
                {
                    m_db.LoadAirport(id, out airportName);
                    m_airports[id - 1] = new Airport(id, airportName); //Database is 1 based so must decrement ID by 1.
                }
            }
            catch (Exception ex) //Generic exception for unknown problem.
            {
                System.Console.WriteLine("Exception type: " + ex.GetType());
                System.Console.WriteLine("Exception message: " + ex.Message);
            }
        }
        /// <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();
            }
        }