diff --git a/aerotow.nas b/aerotow.nas index 8548f05..1105a85 100644 --- a/aerotow.nas +++ b/aerotow.nas @@ -12,11 +12,12 @@ # # Constants # -var addon = addons.getAddon("org.flightgear.addons.Aerotow"); +var ADDON = addons.getAddon("org.flightgear.addons.Aerotow"); +var ADDON_NODE_PATH = ADDON.node.getPath(); var FILENAME_SCENARIO = "aerotown-addon.xml"; var FILENAME_FLIGHTPLAN = "aerotown-addon-flightplan.xml"; -var PATH_SCENARIO = addon.storagePath ~ "/" ~ FILENAME_SCENARIO; -var PATH_FLIGHTPLAN = addon.storagePath ~ "/AI/FlightPlans/" ~ FILENAME_FLIGHTPLAN; +var PATH_SCENARIO = ADDON.storagePath ~ "/" ~ FILENAME_SCENARIO; +var PATH_FLIGHTPLAN = ADDON.storagePath ~ "/AI/FlightPlans/" ~ FILENAME_FLIGHTPLAN; var SCENARIO_ID = "aerotow_addon"; var SCENARIO_NAME = "Aerotow Add-on"; var SCENARIO_DESC = "This scenario starts the towing plane at the airport where the pilot with the glider is located. Use Ctrl-o to hook the plane."; @@ -30,14 +31,14 @@ var g_fpFileHandler = nil; # Handler for wrire flight plan to file var g_coord = nil; # Coordinates for flight plan var g_heading = nil; # AI plane heading var g_altitude = nil; # AI plane altitude -var g_listeners = []; +var g_towListeners = []; # # Initialize thermal module # var init = func () { # Listener for ai-model property triggered when the user select a tow aircraft from add-on menu - append(g_listeners, setlistener(addon.node.getPath() ~ "/addon-devel/ai-model", func () { + append(g_towListeners, setlistener(ADDON_NODE_PATH ~ "/addon-devel/ai-model", func () { startAerotow(); })); } @@ -46,7 +47,7 @@ var init = func () { # Uninitialize thermal module # var uninit = func () { - foreach (var listener; g_listeners) { + foreach (var listener; g_towListeners) { removelistener(listener); } } @@ -172,7 +173,7 @@ var isScenarioAdded = func () { # Return name of selected aircraft. Possible values: "Cub", "DR400", "c182". # var getSelectedAircraft = func () { - return getprop(addon.node.getPath() ~ "/addon-devel/ai-model") or "Cub"; + return getprop(ADDON_NODE_PATH ~ "/addon-devel/ai-model") or "Cub"; } # diff --git a/thermal.nas b/thermal.nas index 3b18a25..6002aa5 100644 --- a/thermal.nas +++ b/thermal.nas @@ -12,7 +12,8 @@ # # Constants # -var addon = addons.getAddon("org.flightgear.addons.Aerotow"); +var ADDON = addons.getAddon("org.flightgear.addons.Aerotow"); +var ADDON_NODE_PATH = ADDON.node.getPath(); # # Variables @@ -23,31 +24,35 @@ var g_thermalListeners = []; # Initialize thermal module # var init = func () { - append(g_thermalListeners, setlistener(addon.node.getPath() ~ "/addon-devel/add-thermal/distance-m", func () { + # Listener for calculate distance from meters to nautical miles. + append(g_thermalListeners, setlistener(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/distance-m", func () { setprop( - addon.node.getPath() ~ "/addon-devel/add-thermal/distance-nm", - getprop(addon.node.getPath() ~ "/addon-devel/add-thermal/distance-m") * globals.M2NM + ADDON_NODE_PATH ~ "/addon-devel/add-thermal/distance-nm", + getprop(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/distance-m") * globals.M2NM ); })); - append(g_thermalListeners, setlistener(addon.node.getPath() ~ "/addon-devel/add-thermal/strength-fps", func () { + # Listener for calculate strength from ft/s to m/s. + append(g_thermalListeners, setlistener(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/strength-fps", func () { setprop( - addon.node.getPath() ~ "/addon-devel/add-thermal/strength-mps", - getprop(addon.node.getPath() ~ "/addon-devel/add-thermal/strength-fps") * globals.FPS2KT * globals.KT2MPS + ADDON_NODE_PATH ~ "/addon-devel/add-thermal/strength-mps", + getprop(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/strength-fps") * globals.FPS2KT * globals.KT2MPS ); })); - append(g_thermalListeners, setlistener(addon.node.getPath() ~ "/addon-devel/add-thermal/diameter-ft", func () { + # Listener for calculate diameter from ft to m. + append(g_thermalListeners, setlistener(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/diameter-ft", func () { setprop( - addon.node.getPath() ~ "/addon-devel/add-thermal/diameter-m", - getprop(addon.node.getPath() ~ "/addon-devel/add-thermal/diameter-ft") * globals.FT2M + ADDON_NODE_PATH ~ "/addon-devel/add-thermal/diameter-m", + getprop(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/diameter-ft") * globals.FT2M ); })); - append(g_thermalListeners, setlistener(addon.node.getPath() ~ "/addon-devel/add-thermal/height-msl", func () { + # Listener for calculate height from ft to m. + append(g_thermalListeners, setlistener(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/height-msl", func () { setprop( - addon.node.getPath() ~ "/addon-devel/add-thermal/height-msl-m", - getprop(addon.node.getPath() ~ "/addon-devel/add-thermal/height-msl") * globals.FT2M + ADDON_NODE_PATH ~ "/addon-devel/add-thermal/height-msl-m", + getprop(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/height-msl") * globals.FT2M ); })); } @@ -68,12 +73,12 @@ var uninit = func () { # var add = func () { var heading = getprop("/orientation/heading-deg") or 0; - var distance = getprop(addon.node.getPath() ~ "/addon-devel/add-thermal/distance-m") or 300; + var distance = getprop(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/distance-m") or 300; var position = geo.aircraft_position(); position.apply_course_distance(heading, distance); - # Get random layer from 1 do 4 + # Get random layer from 1 to 4 var layer = int(rand() * 4) + 1; var args = props.Node.new({ @@ -81,9 +86,9 @@ var add = func () { "model": "Models/Weather/altocumulus_layer" ~ layer ~ ".xml", "latitude": position.lat(), "longitude": position.lon(), - "strength-fps": getprop(addon.node.getPath() ~ "/addon-devel/add-thermal/strength-fps") or 16.0, - "diameter-ft": getprop(addon.node.getPath() ~ "/addon-devel/add-thermal/diameter-ft") or 4000, - "height-msl": getprop(addon.node.getPath() ~ "/addon-devel/add-thermal/height-msl") or 9000, + "strength-fps": getprop(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/strength-fps") or 16.0, + "diameter-ft": getprop(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/diameter-ft") or 4000, + "height-msl": getprop(ADDON_NODE_PATH ~ "/addon-devel/add-thermal/height-msl") or 9000, "search-order": "DATA_ONLY" });