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"); +});