//creates the stop over route based on the main route
public static StopoverRoute CreateStopoverRoute(Airport dest1, Airport stopover, Airport dest2, Route mainroute, bool oneLegged, Route.RouteType type)
{
var stopoverRoute = new StopoverRoute(stopover);
Guid id = Guid.NewGuid();
if (!oneLegged)
{
if (mainroute.Type == Route.RouteType.Passenger || mainroute.Type == Route.RouteType.Mixed)
{
var routeLegTwo = new PassengerRoute(id.ToString(), dest1, stopover, GameObject.GetInstance().GameTime, 0);
foreach (RouteAirlinerClass aClass in ((PassengerRoute) mainroute).Classes)
{
//routeLegTwo.getRouteAirlinerClass(aClass.Type).FarePrice = aClass.FarePrice;
routeLegTwo.GetRouteAirlinerClass(aClass.Type).FarePrice = PassengerHelpers.GetPassengerPrice(dest1, stopover)*GeneralHelpers.ClassToPriceFactor(aClass.Type);
foreach (RouteFacility facility in aClass.GetFacilities())
routeLegTwo.GetRouteAirlinerClass(aClass.Type).AddFacility(facility);
routeLegTwo.GetRouteAirlinerClass(aClass.Type).Seating = aClass.Seating;
}
stopoverRoute.AddLeg(routeLegTwo);
}
if (mainroute.Type == Route.RouteType.Cargo || mainroute.Type == Route.RouteType.Mixed)
{
var routeLegTwo = new CargoRoute(id.ToString(), dest1, stopover, GameObject.GetInstance().GameTime, ((CargoRoute) mainroute).PricePerUnit);
stopoverRoute.AddLeg(routeLegTwo);
}
}
if (mainroute.Type == Route.RouteType.Mixed || mainroute.Type == Route.RouteType.Passenger)
{
id = Guid.NewGuid();
var routeLegOne = new PassengerRoute(id.ToString(), stopover, dest2, GameObject.GetInstance().GameTime, 0);
foreach (RouteAirlinerClass aClass in ((PassengerRoute) mainroute).Classes)
{
//routeLegOne.getRouteAirlinerClass(aClass.Type).FarePrice = aClass.FarePrice;
routeLegOne.GetRouteAirlinerClass(aClass.Type).FarePrice = PassengerHelpers.GetPassengerPrice(stopover, dest2)*GeneralHelpers.ClassToPriceFactor(aClass.Type);
foreach (RouteFacility facility in aClass.GetFacilities())
routeLegOne.GetRouteAirlinerClass(aClass.Type).AddFacility(facility);
routeLegOne.GetRouteAirlinerClass(aClass.Type).Seating = aClass.Seating;
}
stopoverRoute.AddLeg(routeLegOne);
}
if (mainroute.Type == Route.RouteType.Cargo || mainroute.Type == Route.RouteType.Mixed)
{
var routeLegOne = new CargoRoute(id.ToString(), stopover, dest2, GameObject.GetInstance().GameTime, ((CargoRoute) mainroute).PricePerUnit);
stopoverRoute.AddLeg(routeLegOne);
}
return stopoverRoute;
}