Hi All,

Two small Chat Menu related patches:

1) The chat menu will now select the runway closest to the aircraft when the
aircraft is on the ground, or very low (< 100ft). This handles the case where 
the
user has selected a runway explicitly, e.g. 01R for KSFO take-offs for noise
abatement. My thanks for AnMaster for pointing this out on IRC. Note that above
100 ft, the wind-appropriate runway will still be used. 

2) Change to keyboard description for the - key, as pointed out by Melchior.

If someone could commit them to CVS, I'd be very grateful.

-Stuart


Index: chat-menu.xml
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/gui/dialogs/chat-menu.xml,v
retrieving revision 1.1
diff -u -r1.1 chat-menu.xml
--- chat-menu.xml       8 Dec 2007 19:04:59 -0000       1.1
+++ chat-menu.xml       10 Dec 2007 12:18:57 -0000
@@ -179,27 +179,61 @@
         };
       }      
       
-      # Determine the active runway.
-      var wind_speed = getprop("/environment/wind-speed-kt");
-      var wind_from = wind_speed ? 
getprop("/environment/wind-from-heading-deg")
: 270;
-      var max = -1;
+      # Determine the active runway. We have two ways to do this:
+      # - If the aircraft is on the ground (or very close to it), we'll try to
determine 
+      # the runway it is closest to.
+      # - If the aircraft is in the air, we'll work out the active runway based
on the wind.
+      
       var active_runway = "";
-
-      foreach (var r; keys(airport.runways)) {
-        var curr = airport.runways[r];
-        
-        var wind = wind_from - curr.heading;
-        while (wind >= 180) wind -= 360;
-        while (wind < -180) wind += 360;
-        
-        var deviation = math.abs(wind) + 1e-20;
-        var v = (0.01 * curr.length + 0.01 * curr.width) / deviation;
-
-        if (v > max) {
-          max = v;
-          active_runway = r;
+      var on_ground = (getprop("/position/altitude-agl-ft") < 100);
+      
+      if (on_ground)
+      {
+        # To find out the closest runway to the aircrafts position, we'll look
at the heading 
+        # required to go from the aircraft's current position to the center of
each runway. 
+        # The closer this is to the runways real heading, the more likely this
is the runway 
+        # we're on. Note that we can't rely on /sim/atc/runway, as this is only
set on 
+        # initialization.
+        var max = 360;
+        var loc = geo.aircraft_position();
+        
+        foreach (var r; keys(airport.runways)) {
+          var curr = airport.runways[r];
+          var p = geo.Coord.new();
+          p.set_latlon(curr.lat, curr.lon, airport.elevation);
+          
+          var course = p.course_to(loc);
+          var deviation = math.abs(course - geo.normdeg(curr.heading + 180));
+          
+          if (deviation < max)
+          {
+            active_runway = r;
+            max = deviation;
+          }
         }
       }
+      else
+      {      
+        var wind_speed = getprop("/environment/wind-speed-kt");
+        var wind_from = wind_speed ?
getprop("/environment/wind-from-heading-deg") : 270;
+        var max = -1;
+
+        foreach (var r; keys(airport.runways)) {
+          var curr = airport.runways[r];
+        
+          var wind = wind_from - curr.heading;
+          while (wind >= 180) wind -= 360;
+          while (wind < -180) wind += 360;
+        
+          var deviation = math.abs(wind) + 1e-20;
+          var v = (0.01 * curr.length + 0.01 * curr.width) / deviation;
+
+          if (v > max) {
+            max = v;
+            active_runway = r;
+          }
+        }        
+      }
                
       # Find our distance and cardinal direction to the airport.            
       var directions = split(",", "North,North East,East,South East,South,South
West,West,North West");


Index: keyboard.xml
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/keyboard.xml,v
retrieving revision 1.105
diff -u -r1.105 keyboard.xml
--- keyboard.xml        8 Dec 2007 19:30:20 -0000       1.105
+++ keyboard.xml        10 Dec 2007 12:21:17 -0000
@@ -355,7 +355,7 @@
  <key n="45">
   <name>-</name>
   <repeatable type="bool">false</repeatable>
-  <desc>Compose Chat</desc>
+  <desc>Chat Menu</desc>
   <binding>
      <command>dialog-show</command>
      <dialog-name>chat-menu</dialog-name>





      ___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try it
now.
http://uk.answers.yahoo.com/ 

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to