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;
+ },
+};