From 693bebcd4348772d4a2ad38cb88a69e64114c005 Mon Sep 17 00:00:00 2001 From: mfranz Date: Sun, 7 Oct 2007 19:44:58 +0000 Subject: [PATCH] this module is meant for pure startup code. It shall not contain any library code that is called from outside. It will be removed from the global namespace once it has done its job. For now it only selects a proper runway for wind directions reported by METAR, but only, of course, if an airport was chosen, but no runway and no heading, and if the aircraft is actually on ground. --- Nasal/startup.nas | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Nasal/startup.nas diff --git a/Nasal/startup.nas b/Nasal/startup.nas new file mode 100644 index 000000000..f998d6e85 --- /dev/null +++ b/Nasal/startup.nas @@ -0,0 +1,33 @@ +var metar_runway = func { + # select runway according to wind direction reported by METAR + + if (!getprop("/environment/metar/real-metar")) + return printlog("info", "metar-rwy: no live weather"); + if (getprop("/environment/metar/base-wind-speed-kt") < 1) + return; # windspeed pointless for runway choice + if (!getprop("/sim/startup/options/airport")) + return printlog("info", "metar-rwy: no airport requested"); + if (getprop("/sim/startup/options/runway")) + return printlog("info", "metar-rwy: won't override explicit runway"); + if (getprop("/sim/startup/options/heading-deg") < 9990.0) + return printlog("info", "metar-rwy: won't override explicit heading"); + if (!getprop("/sim/presets/onground")) + return printlog("info", "metar-rwy: we aren't on ground"); + + var from = getprop("/environment/metar/base-wind-range-from"); + var to = getprop("/environment/metar/base-wind-range-to"); + var wind_from = (from + to) * 0.5; + + printlog("info", "metar-rwy: setting new target heading ", wind_from); + setprop("/sim/presets/heading-deg", wind_from); + setprop("/sim/presets/longitude-deg", -9999); + setprop("/sim/presets/latitude-deg", -9999); + fgcommand("presets-commit"); + printlog("info", "metar-rwy: selected runway: ", getprop("/sim/atc/runway")); +} + + +_setlistener("/sim/signals/nasal-dir-initialized", func { + metar_runway(); + delete(globals, "startup"); +});