diff --git a/aerotow.nas b/aerotow.nas index 42456a9..b57e70d 100644 --- a/aerotow.nas +++ b/aerotow.nas @@ -9,6 +9,16 @@ # under the GNU Public License v3 (GPLv3) # +# +# Global aliases for boolean types to distinguish the use of "int" from "bool". +# NOTE: unfortunately, it doesn't work as an assignment of a default value for a function parameter! +# +var true = 1; +var false = 0; + +# +# Global object of Aerotow +# var g_Aerotow = nil; # diff --git a/gui/dialogs/towrope-configuration.xml b/gui/dialogs/towrope-configuration.xml index 4b96f9d..2af6eb0 100644 --- a/gui/dialogs/towrope-configuration.xml +++ b/gui/dialogs/towrope-configuration.xml @@ -327,11 +327,11 @@ nasal diff --git a/nasal/aerotow.nas b/nasal/aerotow.nas index 96e2e82..7be1f51 100644 --- a/nasal/aerotow.nas +++ b/nasal/aerotow.nas @@ -55,7 +55,7 @@ var Aerotow = { me.message.success("Aerotow on the way"); # Stop playing engine sound - setprop(me.addonNodePath ~ "/addon-devel/sound/enable", 0); + setprop(me.addonNodePath ~ "/addon-devel/sound/enable", false); # Wait a second for the engine sound to turn off Timer.new().singleShot(1, me, func () { @@ -80,15 +80,15 @@ var Aerotow = { # # Main function to prepare AI scenario and run it. # - # Return 1 on successful, otherwise 0. + # Return true on successful, otherwise false. # startAerotow: func () { if (!me.scenario.unload()) { - return 0; + return false; } if (!me.scenario.generateXml()) { - return 0; + return false; } return me.scenario.load(); @@ -97,10 +97,10 @@ var Aerotow = { # # Function for unload our AI scenario. # - # Return 1 on successful, otherwise 0. + # Return true on successful, otherwise false. # stopAerotow: func () { - var withMessages = 1; + var withMessages = true; return me.scenario.unload(withMessages); }, }; diff --git a/nasal/aircraft.nas b/nasal/aircraft.nas index 6b92dfb..feb56ae 100644 --- a/nasal/aircraft.nas +++ b/nasal/aircraft.nas @@ -50,7 +50,7 @@ var Aircraft = { # # name - Name of aircraft to check. # - # Return 1 when match, otherwise 0. + # Return true when match, otherwise false. # isModelName: func (name) { return name == me.name or name == me.nameMenuCall; @@ -69,8 +69,8 @@ var Aircraft = { # Return selected Aircraft object # # addon - Addon object - # isRouteMode - Use 1 to get the plane for the "Aerotow Route" dialog, - # use 0 (default) for call the airplane for towing. + # isRouteMode - Use true to get the plane for the "Aerotow Route" dialog, + # use false (default) for call the airplane for towing. # getSelected: func (addon, isRouteMode = 0) { var name = Aircraft.getSelectedAircraftName(addon, isRouteMode); @@ -89,10 +89,10 @@ var Aircraft = { # # # addon - Addon object - # isRouteMode - Use 1 to get the plane for the "Aerotow Route" dialog, - # use 0 (default) for call the airplane for towing. + # isRouteMode - Use true to get the plane for the "Aerotow Route" dialog, + # use false (default) for call the airplane for towing. # - getSelectedAircraftName: func (addon, isRouteMode = 0) { + getSelectedAircraftName: func (addon, isRouteMode) { if (isRouteMode) { return getprop(addon.node.getPath() ~ "/addon-devel/route/ai-model") or g_Aircrafts[0].name; } diff --git a/nasal/dialogs/route.nas b/nasal/dialogs/route.nas index 7c243f3..18e6e5b 100644 --- a/nasal/dialogs/route.nas +++ b/nasal/dialogs/route.nas @@ -64,9 +64,9 @@ var RouteDialog = { calculateAltChangeAndTotals: func () { var totalDistance = 0.0; var totalAlt = 0.0; - var isEnd = 0; + var isEnd = false; - var isRouteMode = 1; + var isRouteMode = true; var aircraft = Aircraft.getSelected(me.addon, isRouteMode); for (var i = 0; i < me.maxRouteWaypoints; i += 1) { @@ -84,7 +84,7 @@ var RouteDialog = { totalAlt += altChange; } else { - isEnd = 1; + isEnd = true; } } } diff --git a/nasal/dialogs/thermal.nas b/nasal/dialogs/thermal.nas index 5225b8b..5575110 100644 --- a/nasal/dialogs/thermal.nas +++ b/nasal/dialogs/thermal.nas @@ -62,7 +62,7 @@ var Thermal = { # # Add thermal 300 m before glider position. # - # Return 1 on successful, otherwise 0. + # Return true on successful, otherwise false. # add: func () { var heading = getprop("/orientation/heading-deg") or 0; @@ -87,10 +87,10 @@ var Thermal = { if (fgcommand("add-aiobject", args)) { me.message.success("The thermal has been added"); - return 1; + return true; } me.message.error("Adding thermal failed"); - return 0; + return false; }, }; diff --git a/nasal/flight-plan.nas b/nasal/flight-plan.nas index 2ca0ae2..a204ef9 100644 --- a/nasal/flight-plan.nas +++ b/nasal/flight-plan.nas @@ -124,17 +124,17 @@ var FlightPlan = { # # Initialize flight plan and set it to property tree # - # Return 1 on successful, otherwise 0. + # Return true on successful, otherwise false. # initial: func () { var location = me.getLocation(); if (location == nil) { - return 0; + return false; } var aircraft = Aircraft.getSelected(me.addon); - var isGliderPos = 0; + var isGliderPos = false; me.initAircraftVariable(location, isGliderPos); # inittial readonly waypoint @@ -189,28 +189,28 @@ var FlightPlan = { setprop(me.addonNodePath ~ "/addon-devel/route/wpts/description", "Default route around the start location"); - return 1; + return true; }, # # Generate the XML file with the flight plane for our plane for AI scenario. - # The file will be stored to $Fobj.HOME/Export/aerotown-addon-flightplan.xml. + # The file will be stored to $HOME/Export/Addons/org.flightgear.addons.Aerotow/AI/FlightPlans/aerotown-addon-flightplan.xml. # - # Return 1 on successful, otherwise 0. + # Return true on successful, otherwise false. # generateXml: func () { me.wptCount = 0; var location = me.getLocation(); if (location == nil) { - return 0; + return false; } me.flightPlanWriter.open(); var aircraft = Aircraft.getSelected(me.addon); - var isGliderPos = 1; + var isGliderPos = true; me.initAircraftVariable(location, isGliderPos); # Start at 2 o'clock from the glider... @@ -218,7 +218,7 @@ var FlightPlan = { me.addWptGround({"hdgChange": 60, "dist": 25}, {"altChange": 0, "ktas": 5}); # Reset coord and heading - isGliderPos = 0; + isGliderPos = false; me.initAircraftVariable(location, isGliderPos); var gliderOffsetM = me.getGliderOffsetFromRunwayThreshold(location); @@ -268,7 +268,7 @@ var FlightPlan = { me.flightPlanWriter.close(); - return 1; + return true; }, # @@ -286,9 +286,9 @@ var FlightPlan = { # Initialize AI aircraft variable # # location - Object of location from which the glider start. - # isGliderPos - Pass 1 for set AI aircraft's coordinates as glider position, 0 set coordinates as runway threshold. + # isGliderPos - Pass true for set AI aircraft's coordinates as glider position, false set coordinates as runway threshold. # - initAircraftVariable: func (location, isGliderPos = 1) { + initAircraftVariable: func (location, isGliderPos) { var gliderCoord = geo.aircraft_position(); # Set coordinates as glider position or runway threshold @@ -318,7 +318,7 @@ var FlightPlan = { return rwyThreshold.distance_to(gliderCoord); } - # We are not on the runway + # We are not on the runway, return 0 distance return 0; }, diff --git a/nasal/scenario.nas b/nasal/scenario.nas index 1987b04..3fb693b 100644 --- a/nasal/scenario.nas +++ b/nasal/scenario.nas @@ -38,7 +38,7 @@ var Scenario = { obj.listeners = []; obj.routeDialog = RouteDialog.new(addon, message); obj.flightPlan = FlightPlan.new(addon, message, obj.routeDialog); - obj.isScenarioLoaded = 0; + obj.isScenarioLoaded = false; obj.scenarioPath = addon.storagePath ~ "/" ~ Scenario.FILENAME_SCENARIO; obj.flightPlan.initial(); @@ -64,11 +64,13 @@ var Scenario = { # # Generate the XML file with the AI scenario. - # The file will be stored to $FG_HOME/Export/aerotown-addon.xml. + # The file will be stored to $FG_HOME/Export/Addons/org.flightgear.addons.Aerotow/aerotown-addon.xml. + # + # Return true on successful, otherwise false # generateXml: func () { if (!me.flightPlan.generateXml()) { - return 0; + return false; } var scenarioXml = { @@ -82,7 +84,7 @@ var Scenario = { "class": "aerotow-dragger", "model": Aircraft.getSelected(me.addon).modelPath, "flightplan": FlightPlan.FILENAME_FLIGHTPLAN, - "repeat": 1, + "repeat": true, # start again indefinitely } } } @@ -93,7 +95,7 @@ var Scenario = { me.addScenarioToPropertyList(); - return 1; + return true; }, # @@ -114,67 +116,67 @@ var Scenario = { }, # - # Return 1 if scenario is already added to "/sim/ai/scenarios" property list, otherwise return 0. + # Return true if scenario is already added to "/sim/ai/scenarios" property list, otherwise return false. # isAlreadyAdded: func () { foreach (var scenario; props.globals.getNode("/sim/ai/scenarios").getChildren("scenario")) { var id = scenario.getChild("id"); if (id != nil and id.getValue() == Scenario.SCENARIO_ID) { - return 1; + return true; } } - return 0; + return false; }, # # Load scenario # - # Return 1 on successful, otherwise 0. + # Return true on successful, otherwise false. # load: func () { var args = props.Node.new({ "name": Scenario.SCENARIO_ID }); if (fgcommand("load-scenario", args)) { - me.isScenarioLoaded = 1; + me.isScenarioLoaded = true; me.message.success("Let's fly!"); # Enable engine sound - setprop(me.addonNodePath ~ "/addon-devel/sound/enable", 1); - return 1; + setprop(me.addonNodePath ~ "/addon-devel/sound/enable", true); + return true; } me.message.error("Tow failed!"); - return 0; + return false; }, # # Unload scenario # - # withMessages - Set 1 to display messages. + # withMessages - Set true to display messages. # - # Return 1 on successful, otherwise 0. + # Return true on successful, otherwise false. # unload: func (withMessages = 0) { if (me.isScenarioLoaded) { var args = props.Node.new({ "name": Scenario.SCENARIO_ID }); if (fgcommand("unload-scenario", args)) { - me.isScenarioLoaded = 0; + me.isScenarioLoaded = false; if (withMessages) { me.message.success("Aerotown disabled"); } - return 1; + return true; } if (withMessages) { me.message.error("Aerotown disable failed"); } - return 0; + return false; } if (withMessages) { me.message.success("Aerotown already disabled"); } - return 1; + return true; }, }; diff --git a/nasal/timer.nas b/nasal/timer.nas index d559024..389c920 100644 --- a/nasal/timer.nas +++ b/nasal/timer.nas @@ -33,7 +33,7 @@ var Timer = { var timer = maketimer(delaySec, self, func () { callback(); }); - timer.singleShot = 1; + timer.singleShot = true; timer.start(); return timer;