AddAirportFacility() 공개 메소드

public AddAirportFacility ( Airline airline, AirportFacility facility, System.DateTime finishedDate ) : void
airline TheAirline.Models.Airlines.Airline
facility AirportFacility
finishedDate System.DateTime
리턴 void
        //adds a subsidiary airline to an airline
        public static void AddSubsidiaryAirline(Airline airline, SubsidiaryAirline sAirline, double money, Airport airportHomeBase)
        {
            Terminal.TerminalType terminaltype = sAirline.AirlineRouteFocus == Route.RouteType.Cargo ? Terminal.TerminalType.Cargo : Terminal.TerminalType.Passenger;
            AddAirlineInvoice(airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.AirlineExpenses, -money);
            sAirline.Money = money;
            sAirline.StartMoney = money;

            sAirline.Fees = new AirlineFees();

            airline.AddSubsidiaryAirline(sAirline);

            if (!AirportHelpers.HasFreeGates(airportHomeBase, sAirline, terminaltype) && airportHomeBase.Terminals.GetFreeGates(terminaltype) > 1)
            {
                AirportHelpers.RentGates(airportHomeBase, sAirline, AirportContract.ContractType.Full, terminaltype, 2);
                //sets all the facilities at an airport to none for all airlines
                foreach (Airport airport in Airports.GetAllAirports())
                {
                    foreach (AirportFacility.FacilityType type in Enum.GetValues(typeof (AirportFacility.FacilityType)))
                    {
                        AirportFacility noneFacility = AirportFacilities.GetFacilities(type).Find((facility => facility.TypeLevel == 0));

                        airport.AddAirportFacility(sAirline, noneFacility, GameObject.GetInstance().GameTime);
                    }
                }


                AirportFacility serviceFacility = AirportFacilities.GetFacilities(AirportFacility.FacilityType.Service).Find(f => f.TypeLevel == 1);
                AirportFacility checkinFacility = AirportFacilities.GetFacilities(AirportFacility.FacilityType.CheckIn).Find(f => f.TypeLevel == 1);

                airportHomeBase.AddAirportFacility(sAirline, serviceFacility, GameObject.GetInstance().GameTime);
                airportHomeBase.AddAirportFacility(sAirline, checkinFacility, GameObject.GetInstance().GameTime);
            }

            foreach (AirlinePolicy policy in airline.Policies)
                sAirline.AddAirlinePolicy(policy);

            Airlines.AddAirline(sAirline);
        }
        private static void SetupScenarioAirport(Airline airline, Airport airport, int quantity = 2)
        {
            for (int i = 0; i < quantity; i++)
            {
                if (!AirportHelpers.HasFreeGates(airport, airline))
                {
                    AirportHelpers.RentGates(airport, airline, AirportContract.ContractType.Full);
                }
            }

            AirportFacility checkinFacility =
                AirportFacilities.GetFacilities(AirportFacility.FacilityType.CheckIn).Find(f => f.TypeLevel == 1);
            AirportFacility facility =
                AirportFacilities.GetFacilities(AirportFacility.FacilityType.Service)
                                 .Find((f => f.TypeLevel == 1));

            airport.AddAirportFacility(airline, facility, GameObject.GetInstance().GameTime);
            airport.AddAirportFacility(airline, checkinFacility, GameObject.GetInstance().GameTime);
        }
        //reallocate all gates and facilities from one airport to another - gates, facilities and routes
        public static void ReallocateAirport(Airport oldAirport, Airport newAirport, Airline airline)
        {
            //contract
            List<AirportContract> oldContracts = oldAirport.GetAirlineContracts(airline);

            foreach (AirportContract oldContract in oldContracts)
            {
                oldAirport.RemoveAirlineContract(oldContract);

                oldContract.Airport = newAirport;

                AirportHelpers.AddAirlineContract(oldContract);


                for (int i = 0; i < oldContract.NumberOfGates; i++)
                {
                    Gate newGate = newAirport.Terminals.GetGates().First(g => g.Airline == null);
                    newGate.Airline = airline;

                    Gate oldGate = oldAirport.Terminals.GetGates().First(g => g.Airline == airline);
                    oldGate.Airline = null;
                }
            }
            //routes
            IEnumerable<Route> obsoleteRoutes = (from r in airline.Routes where r.Destination1 == oldAirport || r.Destination2 == oldAirport select r);

            foreach (Route route in obsoleteRoutes)
            {
                if (route.Destination1 == oldAirport) route.Destination1 = newAirport;
                if (route.Destination2 == oldAirport) route.Destination2 = newAirport;


                List<RouteTimeTableEntry> entries = route.TimeTable.Entries.FindAll(e => e.Destination.Airport == oldAirport);

                foreach (RouteTimeTableEntry entry in entries)
                    entry.Destination.Airport = newAirport;

                foreach (FleetAirliner airliner in route.GetAirliners())
                {
                    if (airliner.Homebase == oldAirport)
                        airliner.Homebase = newAirport;
                }
            }

            //facilities
            foreach (AirportFacility facility in oldAirport.GetCurrentAirportFacilities(airline))
            {
                newAirport.AddAirportFacility(airline, facility, GameObject.GetInstance().GameTime);
            }

            oldAirport.ClearFacilities(airline);

            foreach (AirportFacility.FacilityType type in Enum.GetValues(typeof (AirportFacility.FacilityType)))
            {
                AirportFacility noneFacility = AirportFacilities.GetFacilities(type).Find((facility => facility.TypeLevel == 0));

                oldAirport.AddAirportFacility(airline, noneFacility, GameObject.GetInstance().GameTime);
            }
        }