Hi,

i'm newbie in FG development (just subscribed to this mailing list) and in 
C/C++ programming, but i'm interested in making 
FG's ATC more usefull and realistic.

I learned the code and read comments in /src/ATC/* files and have some ideas 
about adding new interesting features to FG's 
ATC.

This (attached) diff fixes only two (little) bugs in Tower-ATC:

   1. Sometimes ATC tells you to follow yourself when you report Downwind, 
like: "GFS, number two, follow GFS on 
base/final/other leg".
   2. When ATC tells you to go around because of traffic, but that traffic is 
you!


My ideas (something of this i already wrote and there's a code):

   1. Requesting weather codition in airport. Some airports don't have ATIS, so 
you can ask ATC: "Please advise weather 
condition" and ATC answers: active runway, wind heading and speed, visibility, 
QFE...
   2. When aircraft requests landing, pilot says: "for full stop with ATIS", 
but in reallife he must say: "information 
Bravo/Charlie/Delta/etc". I added this changes to FG.
   3. Now ATC knows only two answers when requesting landing: "report 
straight-in" and "report downwind". What about other 
legs, turns and vectoring? Like: "Turn left heading 120 degrees until advised" 
or "Turn right heading 10 degrees for landing 
runway 28R, report final" ?
   4. Then i added some checkings of landing gear position and when reporting 
final pilot can say: "Gear down, ready to 
land".
   5. If you forgot gear on final, ATC can report you: "Your landing gear 
appears up".

But this is a very little changes. What about other new feature to make ATC 
more realistic?

Please tell your ideas and advices about adding changes to ATC. What would you 
like to see in FG's ATC?

Thank you and sorry for my bad English :)

Best,
Daniyar

--- src/ATC/tower.cxx	2008-01-19 16:36:42.000000000 +0500
+++ ../fgfs-cvs-last/src/ATC/tower.cxx	2007-05-10 01:41:08.000000000 +0500
@@ -613,7 +613,7 @@
 	doThresholdETACalc();
 	TowerPlaneRec* tf = NULL;
 	for(tower_plane_rec_list_iterator twrItr = appList.begin(); twrItr != appList.end(); twrItr++) {
-		if((*twrItr)->eta < (t->eta + 45) && strcmp ( (*twrItr)->plane.callsign.c_str(), t->plane.callsign.c_str() ) != 0) { // "strcmp" added to fix bug when ATC says that you must follow yourself
+		if((*twrItr)->eta < (t->eta + 45)) {
 			a++;
 			tf = *twrItr;
 			cf = true;
@@ -1057,28 +1057,18 @@
 				// eg. is the plane accelerating down the runway taking off [OK],
 				// or stationary near the start [V. BAD!!].
 				// For now this should stop the AI plane landing on top of the user.
-				tower_plane_rec_list_iterator twrItr;
-				twrItr = rwyList.begin();
-				TowerPlaneRec* tpr = *twrItr;
-				if(strcmp ( tpr->plane.callsign.c_str(), t->plane.callsign.c_str() ) == 0 && rwyList.size() == 1){
-					// Fixing bug when ATC says that we must go around because of traffic on rwy
-					// but that traffic is our plane! In future we can use this expression
-					// for other ATC-messages like "On ground at 46, vacate left."
-				}
-				else{
-					string trns = t->plane.callsign;
-					trns += " GO AROUND TRAFFIC ON RUNWAY I REPEAT GO AROUND";
-					pending_transmission = trns;
-					ImmediateTransmit();
-					t->instructedToGoAround = true;
-					t->clearedToLand = false;
-					// Assume it complies!!!
-					t->opType = CIRCUIT;
-					t->leg = CLIMBOUT;
-					if(t->planePtr) {
-						//cout << "Registering Go-around transmission with AI plane\n";
-						t->planePtr->RegisterTransmission(13);
-					}
+				string trns = t->plane.callsign;
+				trns += " GO AROUND TRAFFIC ON RUNWAY I REPEAT GO AROUND";
+				pending_transmission = trns;
+				ImmediateTransmit();
+				t->instructedToGoAround = true;
+				t->clearedToLand = false;
+				// Assume it complies!!!
+				t->opType = CIRCUIT;
+				t->leg = CLIMBOUT;
+				if(t->planePtr) {
+					//cout << "Registering Go-around transmission with AI plane\n";
+					t->planePtr->RegisterTransmission(13);
 				}
 			} else if(!t->clearedToLand) {
 				// The whip through the appList is a hack since currently t->nextOnRwy doesn't always work
@@ -1217,34 +1207,24 @@
 			// eg. is the plane accelerating down the runway taking off [OK],
 			// or stationary near the start [V. BAD!!].
 			// For now this should stop the AI plane landing on top of the user.
-			tower_plane_rec_list_iterator twrItr;
-			twrItr = rwyList.begin();
-			TowerPlaneRec* tpr = *twrItr;
-			if(strcmp ( tpr->plane.callsign.c_str(), t->plane.callsign.c_str() ) == 0 && rwyList.size() == 1){
-					// Fixing bug when ATC says that we must go around because of traffic on rwy
-					// but that traffic is our plane! In future we can use this expression
-					// for other ATC-messages like "On ground at 46, vacate left."
-			}
-			else{
-				string trns = t->plane.callsign;
-				trns += " GO AROUND TRAFFIC ON RUNWAY I REPEAT GO AROUND";
-				pending_transmission = trns;
-				ImmediateTransmit();
-				t->instructedToGoAround = true;
-				t->clearedToLand = false;
-				t->nextOnRwy = false;	// But note this is recalculated so don't rely on it
-				// Assume it complies!!!
-				t->opType = CIRCUIT;
-				t->leg = CLIMBOUT;
-				if(!t->isUser) {
-					if(t->planePtr) {
-						//cout << "Registering Go-around transmission with AI plane\n";
-						t->planePtr->RegisterTransmission(13);
-					}
-				} else {
-					// TODO - add Go-around ack to comm options,
-					// remove report rwy vacated. (possibly).
+			string trns = t->plane.callsign;
+			trns += " GO AROUND TRAFFIC ON RUNWAY I REPEAT GO AROUND";
+			pending_transmission = trns;
+			ImmediateTransmit();
+			t->instructedToGoAround = true;
+			t->clearedToLand = false;
+			t->nextOnRwy = false;	// But note this is recalculated so don't rely on it
+			// Assume it complies!!!
+			t->opType = CIRCUIT;
+			t->leg = CLIMBOUT;
+			if(!t->isUser) {
+				if(t->planePtr) {
+					//cout << "Registering Go-around transmission with AI plane\n";
+					t->planePtr->RegisterTransmission(13);
 				}
+			} else {
+				// TODO - add Go-around ack to comm options,
+				// remove report rwy vacated. (possibly).
 			}
 		} else if(t->eta < 90 && !t->clearedToLand) {
 			//doThresholdETACalc();
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to