X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIFlightPlan.cxx;h=381f9e94498f0680d44eaab337aa4a08005edf04;hb=40639d38a877b7f58702db0c2b8831985b8ddbaf;hp=4d130991fe0a782e4fdbb1a75de93fc6e67bb179;hpb=1e71177e7c1e9622d2346f168c9fdd479ad1a7cf;p=flightgear.git diff --git a/src/AIModel/AIFlightPlan.cxx b/src/AIModel/AIFlightPlan.cxx index 4d130991f..381f9e944 100644 --- a/src/AIModel/AIFlightPlan.cxx +++ b/src/AIModel/AIFlightPlan.cxx @@ -42,13 +42,19 @@ #include #include "AIFlightPlan.hxx" +#include "AIAircraft.hxx" using std::cerr; +FGAIFlightPlan::FGAIFlightPlan() +{ + sid = 0; +} FGAIFlightPlan::FGAIFlightPlan(const string& filename) { int i; + sid = 0; start_time = 0; leg = 10; gateId = 0; @@ -60,7 +66,7 @@ FGAIFlightPlan::FGAIFlightPlan(const string& filename) try { readProperties(path.str(), &root); - } catch (const sg_exception &e) { + } catch (const sg_exception &) { SG_LOG(SG_GENERAL, SG_ALERT, "Error reading AI flight plan: " << path.str()); // cout << path.str() << endl; @@ -117,6 +123,7 @@ FGAIFlightPlan::FGAIFlightPlan(FGAIAircraft *ac, const string& acType, const string& airline) { + sid = 0; repeat = false; leg = 10; gateId=0; @@ -170,7 +177,7 @@ FGAIFlightPlan::FGAIFlightPlan(FGAIAircraft *ac, waypoints.push_back(wpt); } } - catch (const sg_exception &e) { + catch (const sg_exception &) { SG_LOG(SG_GENERAL, SG_WARN, "Error reading AI flight plan: "); cerr << "Errno = " << errno << endl; @@ -201,7 +208,7 @@ FGAIFlightPlan::FGAIFlightPlan(FGAIAircraft *ac, if (timeDiff >= 2000) leg = 5; - SG_LOG(SG_GENERAL, SG_INFO, "Route from " << dep->getId() << " to " << arr->getId() << ". Set leg to : " << leg); + SG_LOG(SG_GENERAL, SG_INFO, "Route from " << dep->getId() << " to " << arr->getId() << ". Set leg to : " << leg << " " << ac->getTrafficRef()->getCallSign()); wpt_iterator = waypoints.begin(); create(ac, dep,arr, leg, alt, speed, lat, lon, firstLeg, radius, fltType, acType, airline); @@ -359,6 +366,26 @@ void FGAIFlightPlan::IncrementWaypoint(bool eraseWaypoints ) } +void FGAIFlightPlan::DecrementWaypoint(bool eraseWaypoints ) +{ + if (eraseWaypoints) + { + if (wpt_iterator == waypoints.end()) + wpt_iterator--; + else + { + delete *(waypoints.end()); + waypoints.erase(waypoints.end()); + wpt_iterator = waypoints.end(); + wpt_iterator--; + } + } + else + wpt_iterator--; + +} + + // gives distance in feet from a position to a waypoint double FGAIFlightPlan::getDistanceToGo(double lat, double lon, waypoint* wp) const{ return SGGeodesy::distanceM(SGGeod::fromDeg(lon, lat), @@ -461,7 +488,7 @@ void FGAIFlightPlan::deleteTaxiRoute() int FGAIFlightPlan::getRouteIndex(int i) { - if ((i > 0) && (i < waypoints.size())) { + if ((i > 0) && (i < (int)waypoints.size())) { return waypoints[i]->routeIndex; } else