- get rid of global variables and use instance variables - identified all important drawing routines and move them into *.draw files - changed to dynamic loading of *.draw *.model and *.layer files - implemented poor-man's controller hash to move use-case specific conditionals out of the draw files, and back into the instantiation, i.e. Gijs' EFIS class - started identifying stuff that is not specific to drawing, but to what is to be drawn, i.e. Model stuff - such as positioned queries, moved those out into *.model files - some more work on supporting more than a single ND MFD instance per aircraft - renamed a handful of SVG identifiers to avoid naming conflicts and to simplify usage of SVG IDs as member fields - moved all of the setlistener setup out of the fdm-initialized stub right into the ctor of the Efis class (actually that's controller stuff...) - initial MapStructure framework - aircraft-agnostic NavDisplay class - preparations for deprecating map.nas - additions to canvas.map - preparations for making NDStyles configurable via XML
52 lines
1.4 KiB
Text
52 lines
1.4 KiB
Text
# Class things:
|
|
var parents = [SymbolLayer.Controller];
|
|
var __self__ = caller(0)[0];
|
|
SymbolLayer.Controller.add("VOR", __self__);
|
|
SymbolLayer.add("VOR", {
|
|
parents: [SymbolLayer],
|
|
type: "VOR", # Symbol type
|
|
df_controller: __self__, # controller to use by default -- this one
|
|
});
|
|
var new = func(layer) {
|
|
var m = {
|
|
parents: [__self__],
|
|
layer: layer,
|
|
active_vors: [],
|
|
navNs: props.globals.getNode("instrumentation").getChildren("nav"),
|
|
listeners: [],
|
|
};
|
|
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() {
|
|
#print("VOR.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 {
|
|
#print("Run query");
|
|
return positioned.findWithinRange(100, 'vor'); # the range should also be exposed, it will typically be controlled via a GUI widget or NavDisplay switch
|
|
};
|
|
|