86 lines
2.6 KiB
Text
86 lines
2.6 KiB
Text
|
# FG1000 MFD
|
||
|
|
||
|
var nasal_dir = getprop("/sim/fg-root") ~ "/Aircraft/Instruments-3d/FG1000/Nasal/";
|
||
|
io.load_nasal(nasal_dir ~ 'NavMap/NavMap.nas', "fg1000");
|
||
|
io.load_nasal(nasal_dir ~ 'NavMap/NavMapStyles.nas', "fg1000");
|
||
|
io.load_nasal(nasal_dir ~ 'NavMap/NavMapOptions.nas', "fg1000");
|
||
|
io.load_nasal(nasal_dir ~ 'NavMap/NavMapController.nas', "fg1000");
|
||
|
|
||
|
io.load_nasal(nasal_dir ~ 'TrafficMap/TrafficMap.nas', "fg1000");
|
||
|
io.load_nasal(nasal_dir ~ 'TrafficMap/TrafficMapStyles.nas', "fg1000");
|
||
|
io.load_nasal(nasal_dir ~ 'TrafficMap/TrafficMapOptions.nas', "fg1000");
|
||
|
io.load_nasal(nasal_dir ~ 'TrafficMap/TrafficMapController.nas', "fg1000");
|
||
|
|
||
|
io.load_nasal(nasal_dir ~ 'EIS.nas', "fg1000");
|
||
|
io.load_nasal(nasal_dir ~ 'Drivers/EISDriver.nas', "fg1000");
|
||
|
io.load_nasal(nasal_dir ~ 'PageGroupController.nas', "fg1000");
|
||
|
|
||
|
|
||
|
var MFD =
|
||
|
{
|
||
|
# Center of any maps
|
||
|
MAP_CENTER : {
|
||
|
X: (1024/2 + 60),
|
||
|
Y: (768/2 + 20)
|
||
|
},
|
||
|
|
||
|
# Constants for the hard-buttons on the fascia
|
||
|
FASCIA : {
|
||
|
FMS_OUTER : 0,
|
||
|
FMS_INNER : 1,
|
||
|
RANGE : 2,
|
||
|
},
|
||
|
|
||
|
|
||
|
|
||
|
new : func (myCanvas)
|
||
|
{
|
||
|
var obj = { parents : [ MFD ] };
|
||
|
|
||
|
obj._svg = myCanvas.createGroup("softkeys");
|
||
|
canvas.parsesvg(obj._svg, '/Aircraft/Instruments-3d/FG1000/Models/MFD.svg');
|
||
|
|
||
|
obj._MFDDevice = canvas.PFD_Device.new(obj._svg, 12, "SoftKey", myCanvas, "MFD");
|
||
|
obj._MFDDevice.RegisterWithEmesary();
|
||
|
|
||
|
# Engine Information System
|
||
|
obj._eisDriver = fg1000.EISDriver.new();
|
||
|
obj._eis = fg1000.EIS.new(myCanvas, obj._eisDriver);
|
||
|
|
||
|
# Controller for the display on the bottom left which allows selection
|
||
|
# of page groups and individual pages using the FMS controller.
|
||
|
obj._pageGroupController = fg1000.PageGroupController.new(myCanvas, obj._svg, obj._MFDDevice);
|
||
|
obj._pageGroupController.RegisterWithEmesary();
|
||
|
|
||
|
obj._pageGroupController.addPage("NavigationMap", fg1000.NavMap.new(myCanvas, obj._MFDDevice, obj._svg));
|
||
|
obj._pageGroupController.addPage("TrafficMap", fg1000.TrafficMap.new(myCanvas, obj._MFDDevice, obj._svg));
|
||
|
|
||
|
# Display the NavMap and the appropriate top level on startup.
|
||
|
obj._MFDDevice.selectPage(obj._pageGroupController.getPage("NavigationMap"));
|
||
|
|
||
|
# Add a wheel controller., which we will attach to the zoom.
|
||
|
myCanvas.addEventListener("wheel", func(e)
|
||
|
{
|
||
|
if (e.deltaY >0) {
|
||
|
obj._MFDDevice.current_page.controller.zoomIn();
|
||
|
} else {
|
||
|
obj._MFDDevice.current_page.controller.zoomOut();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var updateTimer = func() {
|
||
|
obj._eisDriver.update();
|
||
|
obj._eis.update();
|
||
|
settimer(updateTimer, 0.1);
|
||
|
};
|
||
|
|
||
|
updateTimer();
|
||
|
|
||
|
return obj;
|
||
|
},
|
||
|
del: func()
|
||
|
{
|
||
|
me._pageGroupController.DeRegisterWithEmesary();
|
||
|
}
|
||
|
};
|