diff --git a/Nasal/aircraft.nas b/Nasal/aircraft.nas index abe6f92bd..3241cbbbb 100644 --- a/Nasal/aircraft.nas +++ b/Nasal/aircraft.nas @@ -349,36 +349,39 @@ var data = { me.path = getprop("/sim/fg-home") ~ "/aircraft-data/" ~ getprop("/sim/aircraft") ~ ".xml"; me.signalN = props.globals.getNode("/sim/signals/save", 1); me.catalog = []; - me._timer = maketimer(60, me, me._save_); + me._timer = maketimer(60, me, me._save_); setlistener("/sim/signals/reinit", func(n) { - if (n.getBoolValue() and getprop("/sim/startup/save-on-exit")) { - me._save_(); - } - }); + if (n.getBoolValue() and getprop("/sim/startup/save-on-exit")) { + me._save_(); + } + }); setlistener("/sim/signals/exit", func { - if (getprop("/sim/startup/save-on-exit")) { - me._save_(); - } - }); + if (getprop("/sim/startup/save-on-exit")) { + me._save_(); + } + }); + return me; }, - + load: func { if (io.stat(me.path) != nil) { logprint(LOG_INFO, "loading aircraft data from ", me.path); io.read_properties(me.path, props.globals); } + return me; }, - + save: func(v = nil) { if (v == nil) { me._save_(); - me._timer.stop(); + me._timer.stop(); } else { me._timer.restart(60 * v); } + return me; }, - + _save_: func { size(me.catalog) or return; logprint(LOG_INFO, "saving aircraft data to ", me.path); @@ -387,16 +390,26 @@ var data = { foreach (var c; me.catalog) { if (c[0] == `/`) { c = substr(c, 1); - } + } props.copy(props.globals.getNode(c, 1), data.getNode(c, 1)); } io.write_properties(me.path, data); }, - + add: func(p...) { foreach (var n; props.nodeList(p)) { append(me.catalog, n.getPath()); - } + } + return me; + }, + remove: func(p...) { + foreach (var n; props.nodeList(p)) { + var i = vecindex(me.catalog, n.getPath()); + if (i != nil) { + me.catalog = subvec(me.catalog, 0, i) ~ subvec(me.catalog, i + 1); + } + } + return me; }, };