private static void CreateComputerRoutes(Airline airline) { bool leaseAircraft = airline.Profile.PrimaryPurchasing == AirlineProfile.PreferedPurchasing.Leasing; Airport airportHomeBase = FindComputerHomeBase(airline); AirportFacility serviceFacility = AirportFacilities.GetFacilities(AirportFacility.FacilityType.Service).Find(f => f.TypeLevel == 1); AirportFacility checkinFacility = AirportFacilities.GetFacilities(AirportFacility.FacilityType.CheckIn).Find(f => f.TypeLevel == 1); AirportFacility cargoTerminal = AirportFacilities.GetFacilities(AirportFacility.FacilityType.Cargo).Find(f => f.TypeLevel > 0); airportHomeBase.AddAirportFacility(airline, serviceFacility, GameObject.GetInstance().GameTime); airportHomeBase.AddAirportFacility(airline, checkinFacility, GameObject.GetInstance().GameTime); if (airline.AirlineRouteFocus == Route.RouteType.Cargo) { airportHomeBase.AddAirportFacility(airline, cargoTerminal, GameObject.GetInstance().GameTime); } AirlineStartData startData = AirlineStartDatas.GetAirlineStartData(airline); //creates the start data for an airline if (startData != null) { AirportHelpers.RentGates(airportHomeBase, airline, AirportContract.ContractType.Full); CreateAirlineStartData(airline, startData); } else { List<Airport> airportDestinations = AIHelpers.GetDestinationAirports(airline, airportHomeBase); if (airportDestinations.Count == 0) { airportDestinations = Airports.GetAirports( a => a.Profile.Country.Region == airportHomeBase.Profile.Country.Region && a != airportHomeBase); } KeyValuePair<Airliner, bool>? airliner = null; Airport airportDestination = null; int counter = 0; while ((airportDestination == null || airliner == null || !airliner.HasValue) && airportDestinations.Count > counter) { airportDestination = airportDestinations[counter]; airliner = AIHelpers.GetAirlinerForRoute( airline, airportHomeBase, airportDestination, leaseAircraft, airline.AirlineRouteFocus, true); counter++; } if (airportDestination == null || !airliner.HasValue) { CreateComputerRoutes(airline); } else { AirportHelpers.AddAirlineContract( new AirportContract( airline, airportHomeBase, AirportContract.ContractType.Full, airline.AirlineRouteFocus == Route.RouteType.Cargo ? Terminal.TerminalType.Cargo : Terminal.TerminalType.Passenger, GameObject.GetInstance().GameTime, 2, 25, 0, true)); AirportHelpers.RentGates(airportDestination, airline, AirportContract.ContractType.LowService); //airportDestination.addAirportFacility(airline, checkinFacility, GameObject.GetInstance().GameTime); Guid id = Guid.NewGuid(); double price = PassengerHelpers.GetPassengerPrice(airportDestination, airline.Airports[0]); Route route = null; if (airline.AirlineRouteFocus == Route.RouteType.Passenger) { route = new PassengerRoute( id.ToString(), airportDestination, airline.Airports[0], GameObject.GetInstance().GameTime, price); RouteClassesConfiguration configuration = AIHelpers.GetRouteConfiguration((PassengerRoute) route); foreach (RouteClassConfiguration classConfiguration in configuration.GetClasses()) { ((PassengerRoute) route).GetRouteAirlinerClass(classConfiguration.Type).FarePrice = price *GeneralHelpers .ClassToPriceFactor ( classConfiguration .Type); foreach (RouteFacility rFacility in classConfiguration.GetFacilities()) { ((PassengerRoute) route).GetRouteAirlinerClass(classConfiguration.Type) .AddFacility(rFacility); } } } if (airline.AirlineRouteFocus == Route.RouteType.Helicopter) { route = new HelicopterRoute( id.ToString(), airportDestination, airline.Airports[0], GameObject.GetInstance().GameTime, price); RouteClassesConfiguration configuration = AIHelpers.GetRouteConfiguration((HelicopterRoute) route); foreach (RouteClassConfiguration classConfiguration in configuration.GetClasses()) { ((HelicopterRoute) route).GetRouteAirlinerClass(classConfiguration.Type).FarePrice = price *GeneralHelpers .ClassToPriceFactor ( classConfiguration .Type); foreach (RouteFacility rFacility in classConfiguration.GetFacilities()) { ((HelicopterRoute) route).GetRouteAirlinerClass(classConfiguration.Type) .AddFacility(rFacility); } } } if (airline.AirlineRouteFocus == Route.RouteType.Cargo) { route = new CargoRoute( id.ToString(), airportDestination, airline.Airports[0], GameObject.GetInstance().GameTime, PassengerHelpers.GetCargoPrice(airportDestination, airline.Airports[0])); airportDestination.AddAirportFacility(airline, cargoTerminal, GameObject.GetInstance().GameTime); } if (leaseAircraft) { AirlineHelpers.AddAirlineInvoice( airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Rents, -airliner.Value.Key.LeasingPrice*2); } else { AirlineHelpers.AddAirlineInvoice( airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -airliner.Value.Key.GetPrice()); } var fAirliner = new FleetAirliner( leaseAircraft ? FleetAirliner.PurchasedType.Leased : FleetAirliner.PurchasedType.Bought, GameObject.GetInstance().GameTime, airline, airliner.Value.Key, airportHomeBase) {Status = FleetAirliner.AirlinerStatus.ToRouteStart}; fAirliner.AddRoute(route); AirlinerHelpers.CreateAirlinerClasses(fAirliner.Airliner); AirlineHelpers.HireAirlinerPilots(fAirliner); airline.AddAirliner(fAirliner); airline.AddRoute(route); if (route != null) { route.LastUpdated = GameObject.GetInstance().GameTime; if (route.Type == Route.RouteType.Passenger || route.Type == Route.RouteType.Mixed) { AIHelpers.CreateRouteTimeTable(route, fAirliner); } if (route.Type == Route.RouteType.Cargo) { AIHelpers.CreateCargoRouteTimeTable(route, fAirliner); } } } } }
private static void SetupScenarioRoute(ScenarioAirlineRoute saroute, Airline airline) { SetupScenarioAirport(airline, saroute.Destination1, saroute.Quantity); SetupScenarioAirport(airline, saroute.Destination2, saroute.Quantity); double price = PassengerHelpers.GetPassengerPrice(saroute.Destination1, saroute.Destination2); for (int i = 0; i < saroute.Quantity; i++) { Guid id = Guid.NewGuid(); var route = new PassengerRoute( id.ToString(), saroute.Destination1, saroute.Destination2, GameObject.GetInstance().GameTime, price); RouteClassesConfiguration configuration = AIHelpers.GetRouteConfiguration(route); foreach (RouteClassConfiguration classConfiguration in configuration.GetClasses()) { route.GetRouteAirlinerClass(classConfiguration.Type).FarePrice = price *GeneralHelpers.ClassToPriceFactor (classConfiguration.Type); foreach (RouteFacility rfacility in classConfiguration.GetFacilities()) { route.GetRouteAirlinerClass(classConfiguration.Type).AddFacility(rfacility); } } airline.AddRoute(route); FleetAirliner fAirliner = AirlineHelpers.CreateAirliner(airline, saroute.AirlinerType); airline.AddAirliner(fAirliner); fAirliner.AddRoute(route); AIHelpers.CreateRouteTimeTable(route, fAirliner); fAirliner.Status = FleetAirliner.AirlinerStatus.ToRouteStart; AirlineHelpers.HireAirlinerPilots(fAirliner); route.LastUpdated = GameObject.GetInstance().GameTime; } }
//orders a number of airliners for an airline public static void OrderAirliners(Airline airline, List<AirlinerOrder> orders, Airport airport, DateTime deliveryDate, double discount) { Guid id = Guid.NewGuid(); foreach (AirlinerOrder order in orders) { for (int i = 0; i < order.Amount; i++) { var airliner = new Airliner(id.ToString(), order.Type, airline.Profile.Country.TailNumbers.GetNextTailNumber(), deliveryDate); Airliners.AddAirliner(airliner); const FleetAirliner.PurchasedType pType = FleetAirliner.PurchasedType.Bought; airline.AddAirliner(pType, airliner, airport); airliner.ClearAirlinerClasses(); foreach (AirlinerClass aClass in order.Classes) { var tClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity) {RegularSeatingCapacity = aClass.RegularSeatingCapacity}; foreach (AirlinerFacility facility in aClass.GetFacilities()) tClass.SetFacility(airline, facility); airliner.AddAirlinerClass(tClass); } } } int totalAmount = orders.Sum(o => o.Amount); double price = orders.Sum(o => o.Type.Price*o.Amount); double totalPrice = price*((1 - GeneralHelpers.GetAirlinerOrderDiscount(totalAmount)))*((100 - discount)/100); AddAirlineInvoice(airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -totalPrice); }
//switches from one airline to another airline public static void SwitchAirline(Airline airlineFrom, Airline airlineTo) { while (airlineFrom.Alliances.Count > 0) { Alliance alliance = airlineFrom.Alliances[0]; alliance.RemoveMember(airlineFrom); alliance.AddMember(new AllianceMember(airlineTo, GameObject.GetInstance().GameTime)); } while (airlineFrom.Facilities.Count > 0) { AirlineFacility airlineFacility = airlineFrom.Facilities[0]; airlineFrom.RemoveFacility(airlineFacility); airlineTo.AddFacility(airlineFacility); } while (airlineFrom.GetFleetSize() > 0) { FleetAirliner airliner = airlineFrom.Fleet[0]; airlineFrom.RemoveAirliner(airliner); airlineTo.AddAirliner(airliner); airliner.Airliner.Airline = airlineTo; } while (airlineFrom.Routes.Count > 0) { Route route = airlineFrom.Routes[0]; route.Airline = airlineTo; airlineFrom.RemoveRoute(route); airlineTo.AddRoute(route); } while (airlineFrom.Pilots.Count > 0) { Pilot pilot = airlineFrom.Pilots[0]; airlineFrom.RemovePilot(pilot); pilot.Airline = airlineTo; airlineTo.AddPilot(pilot); } while (airlineFrom.Airports.Count > 0) { Airport airport = airlineFrom.Airports[0]; airport.Terminals.SwitchAirline(airlineFrom, airlineTo); foreach (AirportFacility facility in airport.GetCurrentAirportFacilities(airlineFrom)) { if (facility.TypeLevel > airport.GetCurrentAirportFacility(airlineTo, facility.Type).TypeLevel) airport.AddAirportFacility(airlineTo, facility, GameObject.GetInstance().GameTime); AirportFacility noneFacility = AirportFacilities.GetFacilities(facility.Type).Find(f => f.TypeLevel == 0); airport.AddAirportFacility(airlineFrom, noneFacility, GameObject.GetInstance().GameTime); } } }
public static FleetAirliner AddAirliner(Airline airline, Airliner airliner, Airport airport, Boolean leased) { if (Countries.GetCountryFromTailNumber(airliner.TailNumber).Name != airline.Profile.Country.Name) { lock (airline.Profile.Country.TailNumbers) { airliner.TailNumber = airline.Profile.Country.TailNumbers.GetNextTailNumber(); } } var fAirliner = new FleetAirliner(leased ? FleetAirliner.PurchasedType.Leased : FleetAirliner.PurchasedType.Bought, GameObject.GetInstance().GameTime, airline, airliner, airport); airline.AddAirliner(fAirliner); return fAirliner; }