/*returns the inflight demand score for the route*/ public static double GetRouteInflightScore(Route route) { TimeSpan flightTime = MathHelpers.GetFlightTime(route.Destination1, route.Destination2, route.GetAirliners()[0].Airliner.Type); AirlinerFacility inflight = route.GetAirliners()[0].Airliner.GetAirlinerClass(AirlinerClass.ClassType.EconomyClass).GetFacility(AirlinerFacility.FacilityType.Video); IOrderedEnumerable<AirlinerFacility> videofacilities = AirlinerFacilities.GetFacilities(AirlinerFacility.FacilityType.Video).Where(f => f.FromYear >= GameObject.GetInstance().GameTime.Year).OrderBy(f => f.ServiceLevel); int facilitynumber = videofacilities.Count() - videofacilities.ToList().IndexOf(inflight) - 1; double inflightlevel; if (flightTime.Hours < 1) { inflightlevel = 9 - facilitynumber; } else if (flightTime.Hours >= 1 && flightTime.Hours < 3) { inflightlevel = 8 - facilitynumber; } else if (flightTime.Hours >= 3 && flightTime.Hours < 7) { inflightlevel = 7 - facilitynumber; } else { inflightlevel = 10 - (2*facilitynumber); } return Math.Min(10, inflightlevel); }
/*returns the plane age score for the route*/ public static double GetPlaneAgeScore(Route route) { FleetAirliner airliner = route.GetAirliners()[0]; int age = airliner.Airliner.Age; double score = 10 - (age/2); return Math.Max(1, score); }
/*returns the meal score for the route*/ public static double GetRouteMealScore(Route route) { TimeSpan flightTime = MathHelpers.GetFlightTime(route.Destination1, route.Destination2, route.GetAirliners()[0].Airliner.Type); RouteFacility food = ((PassengerRoute) route).GetRouteAirlinerClass(AirlinerClass.ClassType.EconomyClass).GetFacility(RouteFacility.FacilityType.Food); double foodlevel; if (flightTime.Hours < 1) { if (food.ServiceLevel < 0) foodlevel = 5; else foodlevel = 5 + (food.ServiceLevel/10); } else if (flightTime.Hours >= 1 && flightTime.Hours < 3) { if (food.ServiceLevel < 0) foodlevel = 4; else foodlevel = 4 + (food.ServiceLevel/10); } else if (flightTime.Hours >= 3 && flightTime.Hours < 7) { if (food.ServiceLevel < 0) foodlevel = 2; else foodlevel = 3 + (food.ServiceLevel/10); } else { if (food.ServiceLevel < 0) foodlevel = 1; else foodlevel = 2 + (food.ServiceLevel/10); } return Math.Min(10, foodlevel); }
public RoutePlannerItemMVVM(Route route, AirlinerType type) { Route = route; var g2 = new Guid(Route.Id); byte[] bytes = g2.ToByteArray(); byte red = bytes[0]; byte green = bytes[1]; byte blue = bytes[2]; var brush = new SolidColorBrush(Color.FromRgb(red, green, blue)); brush.Opacity = 0.4; Brush = brush; FlightTime = MathHelpers.GetFlightTime(Route.Destination1, Route.Destination2, type); Airliners = Route.GetAirliners().Count; }
/*returns the seats score for the route*/ public static double GetRouteSeatsScore(Route route) { TimeSpan flightTime = MathHelpers.GetFlightTime(route.Destination1, route.Destination2, route.GetAirliners()[0].Airliner.Type); AirlinerFacility seats = route.GetAirliners()[0].Airliner.GetAirlinerClass(AirlinerClass.ClassType.EconomyClass).GetFacility(AirlinerFacility.FacilityType.Seat); IOrderedEnumerable<AirlinerFacility> seatfacilities = AirlinerFacilities.GetFacilities(AirlinerFacility.FacilityType.Seat).Where(f => f.FromYear >= GameObject.GetInstance().GameTime.Year).OrderBy(f => f.ServiceLevel); int facilitynumber = seatfacilities.Count() - seatfacilities.ToList().IndexOf(seats) - 1; //max == 6 double seatlevel; if (flightTime.Hours < 1) { seatlevel = 13 - facilitynumber; } else if (flightTime.Hours >= 1 && flightTime.Hours < 3) { seatlevel = 12 - facilitynumber; } else if (flightTime.Hours >= 3 && flightTime.Hours < 7) { seatlevel = 11 - facilitynumber; } else { seatlevel = 10 - facilitynumber; } return Math.Min(10, seatlevel); }
/*returns the plane type score for the route*/ public static double GetRoutePlaneTypeScore(Route route) { TimeSpan flightTime = MathHelpers.GetFlightTime(route.Destination1, route.Destination2, route.GetAirliners()[0].Airliner.Type); AirlinerType airlinertype = route.GetAirliners()[0].Airliner.Type; int oldTypeFactor = airlinertype.Produced.To < GameObject.GetInstance().GameTime ? 1 : 0; int airlinerLevel; int paxLevel = ((AirlinerPassengerType) airlinertype).MaxSeatingCapacity/40; //maks 10?? if (flightTime.Hours < 1) { airlinerLevel = 4 + paxLevel - oldTypeFactor; } else if (flightTime.Hours >= 1 && flightTime.Hours < 3) { airlinerLevel = 3 + paxLevel - oldTypeFactor; } else if (flightTime.Hours >= 3 && flightTime.Hours < 7) { airlinerLevel = 2 + paxLevel - oldTypeFactor; } else { airlinerLevel = 1 + paxLevel - oldTypeFactor; } return Math.Min(10, airlinerLevel); }