# See: http://wiki.flightgear.org/MapStructure # Class things: var name ='VOR'; var parents = [SymbolLayer.Controller]; var __self__ = caller(0)[0]; SymbolLayer.Controller.add(name, __self__); SymbolLayer.add(name, { parents: [SymbolLayer], type: name, # Symbol type df_controller: __self__, # controller to use by default -- this one }); var new = func(layer) { if(0) { # TODO: generalize and move to MapStructure.nas var required_controllers = [ {name: 'query_range',type:'func'}, ]; foreach(var c; required_controllers) { if (!contains(layer.map.controller, c.name) or typeof(layer.map.controller[c.name]) !=c.type) die("Required controller is missing/invalid:"~ c.name ~ ' ['~c.type~']' ); } } var m = { parents: [__self__], layer: layer, map: layer.map, active_vors: [], navNs: props.globals.getNode("instrumentation").getChildren("nav"), listeners: [], query_type:'vor', }; setsize(m.active_vors, size(m.navNs)); foreach (var navN; m.navNs) { append(m.listeners, setlistener( navN.getNode("frequencies/selected-mhz"), func m.changed_freq() )); } #call(debug.dump, keys(layer)); m.changed_freq(update:0); return m; }; var del = func() { printlog(_MP_dbg_lvl, name,".lcontroller.del()"); foreach (var l; me.listeners) removelistener(l); }; # Controller methods var isActive = func(model) { var my_freq = model.frequency/100; foreach (var freq; me.active_vors) if (freq == my_freq) return 1; return 0; }; var changed_freq = func(update=1) { #debug.dump(me.active_vors); foreach (var navN; me.navNs) me.active_vors[ navN.getIndex() ] = navN.getValue("frequencies/selected-mhz"); if (update) me.layer.update(); }; var searchCmd = func { printlog(_MP_dbg_lvl, "Running query:", me.query_type); var range = me.map.getRange(); if (range == nil) return; return positioned.findWithinRange(me.map.getPosCoord(), range, me.query_type); };