-void FGAIManager::processScenario( string filename ) {
- FGAIScenario* s = new FGAIScenario( filename );
- FGAIFlightPlan* f;
-
- for (int i=0;i<s->nEntries();i++) {
- FGAIScenario::entry* en = s->getNextEntry();
- f = 0;
- if (en) {
- if (en->flightplan != ""){
- f = new FGAIFlightPlan( en->flightplan );
- }
- if (en->aitype == "aircraft"){
- if (f){
- createAircraft( en->aircraft_class, en->model_path, f );
- } else {
- createAircraft( en->aircraft_class, en->model_path, en->latitude,
- en->longitude, en->altitude, en->heading,
- en->speed, en->roll );
- }
- } else if (en->aitype == "ship"){
- if (f){
- createShip( en->model_path, f );
- } else {
- createShip( en->model_path, en->latitude,
- en->longitude, en->altitude, en->heading,
- en->speed, en->rudder );
- }
-
- } else if (en->aitype == "storm"){
- createStorm( en->model_path, en->latitude, en->longitude,
- en->altitude, en->heading, en->speed );
- } else if (en->aitype == "thermal"){
- createThermal( en->latitude, en->longitude, en->strength,
- en->diameter );
- } else if (en->aitype == "ballistic"){
- createBallistic( en->model_path, en->latitude, en->longitude,
- en->altitude, en->azimuth, en->elevation, en->speed,
- en->eda, en->life, en->buoyancy, en->wind_from_east,
- en-> wind_from_north, en->wind);
- }
+ double tgt_lat = (*ai_list_itr)->_getLatitude();
+ double tgt_lon = (*ai_list_itr)->_getLongitude();
+ int id = (*ai_list_itr)->getID();
+
+ double range = calcRange(lat, lon, tgt_lat, tgt_lon);
+
+ SG_LOG(SG_GENERAL, SG_DEBUG, "AIManager: AI list size "
+ << ai_list.size()
+ << " type " << type
+ << " ID " << id
+ << " range " << range
+ //<< " bearing " << bearing
+ << " alt " << tgt_alt
+ );
+
+ tgt_length[type] += fuse_range;
+
+ if (range < tgt_length[type]){
+ SG_LOG(SG_GENERAL, SG_DEBUG, "AIManager: HIT! "
+ << " type " << type
+ << " ID " << id
+ << " range " << range
+ << " alt " << tgt_alt
+ );
+ return (*ai_list_itr).get();
+ }
+ ++ai_list_itr;