diff --git a/addon-main.nas b/addon-main.nas index c11ebfb..4906789 100644 --- a/addon-main.nas +++ b/addon-main.nas @@ -42,6 +42,7 @@ var main = func(addon) { # var loadExtraNasalFiles = func (addon) { var modules = [ + "nasal/timer", "nasal/aircraft", "nasal/message", "nasal/dialogs/route", diff --git a/addon-menubar-items.xml b/addon-menubar-items.xml index 01ad7f5..9c3dcf2 100644 --- a/addon-menubar-items.xml +++ b/addon-menubar-items.xml @@ -79,11 +79,9 @@ nasal diff --git a/nasal/aerotow.nas b/nasal/aerotow.nas index 28a9ade..cfcc97b 100644 --- a/nasal/aerotow.nas +++ b/nasal/aerotow.nas @@ -51,8 +51,6 @@ var Aerotow = { # # Function for restart AI scenario with delay when the sound has to stop. # - # Return 1 on successful, otherwise 0. - # restartAerotow: func () { me.message.success("Aerotow on the way"); @@ -60,11 +58,9 @@ var Aerotow = { setprop(me.addonNodePath ~ "/addon-devel/sound/enable", 0); # Wait a second for the engine sound to turn off - var timer = maketimer(1, func () { + Timer.new().singleShot(1, me, func () { me.unloadScenario(); }); - timer.singleShot = 1; - timer.start(); }, # @@ -76,11 +72,9 @@ var Aerotow = { } # Start aerotow with delay to avoid duplicate engine sound playing - var timer = maketimer(1, func () { + Timer.new().singleShot(1, me, func () { me.startAerotow(); }); - timer.singleShot = 1; - timer.start(); }, # diff --git a/nasal/timer.nas b/nasal/timer.nas new file mode 100644 index 0000000..673b314 --- /dev/null +++ b/nasal/timer.nas @@ -0,0 +1,41 @@ +# +# Aerotow Everywhere - Add-on for FlightGear +# +# Written and developer by Roman Ludwicki (PlayeRom, SP-ROM) +# +# Copyright (C) 2022 Roman Ludwicki +# +# Aerotow Everywhere is an Open Source project and it is licensed +# under the GNU Public License v3 (GPLv3) +# + +# +# Class Timer for wrapping maketimer() +# +var Timer = { + # + # Constructor + # + new: func () { + return { parents: [Timer] }; + }, + + # + # Run timer as single shot + # + # delaySec - Delay in seconds for execute timer's callback. + # self - Specifying what any "me" references in the function being called will refer to. + # callback - Function to be called after given delay. + # + # Return timer handler object + # + singleShot: func (delaySec, self, callback) { + var timer = maketimer(delaySec, self, func () { + callback(); + }); + timer.singleShot = 1; + timer.start(); + + return timer; + }, +};