Add all pages and add switching mechanism
This commit is contained in:
parent
a28b6bf899
commit
8ae0f00f69
14 changed files with 1665 additions and 9 deletions
|
@ -4736,6 +4736,17 @@
|
|||
<file>Aircraft/A320-family/Models/Instruments/Upper-ECAM/Upper-ECAM.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-base.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM.nas</file>
|
||||
</canvas_ecam>
|
||||
<canvas_iesi>
|
||||
|
|
|
@ -7,9 +7,10 @@ var gen2_load = props.globals.initNode("/systems/electrical/extra/gen2-load", 0,
|
|||
|
||||
var canvas_lowerECAMPageApu =
|
||||
{
|
||||
new: func(svg) {
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageApu,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
|
@ -266,12 +267,17 @@ var canvas_lowerECAMPageApu =
|
|||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
|
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageBleed =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageBleed,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageCond =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageCond,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageDoor =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageDoor,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageElec =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageElec,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageEng =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageEng,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageFctl =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageFctl,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageFuel =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageFuel,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageHyd =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageHyd,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPagePress =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPagePress,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageSts =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageSts,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
147
Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas
Normal file
147
Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas
Normal file
|
@ -0,0 +1,147 @@
|
|||
# A3XX Lower ECAM Canvas
|
||||
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
|
||||
|
||||
var canvas_lowerECAMPageWheel =
|
||||
{
|
||||
new: func(svg,name) {
|
||||
var obj = {parents: [canvas_lowerECAMPageWheel,canvas_lowerECAM_base] };
|
||||
obj.group = obj.canvas.createGroup();
|
||||
obj.name = name;
|
||||
|
||||
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
|
||||
|
||||
foreach(var key; obj.getKeys()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
foreach(var key; obj.getKeysBottom()) {
|
||||
obj[key] = obj.group.getElementById(key);
|
||||
};
|
||||
|
||||
obj.units = acconfig_weight_kgs.getValue();
|
||||
|
||||
# init
|
||||
|
||||
obj.update_items = [
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
obj.updateItemsBottom = [
|
||||
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
|
||||
obj.units = val;
|
||||
if (val) {
|
||||
obj["GW-weight-unit"].setText("KG");
|
||||
} else {
|
||||
obj["GW-weight-unit"].setText("LBS");
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("hour", nil, func(val) {
|
||||
obj["UTCh"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("minute", nil, func(val) {
|
||||
obj["UTCm"].setText(sprintf("%02d", val));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
|
||||
if (obj.displayedGForce) {
|
||||
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
|
||||
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
|
||||
obj.displayedGForce = 1;
|
||||
obj["GLoad"].show();
|
||||
} else {
|
||||
obj.displayedGForce = 0;
|
||||
obj["GLoad"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeysBottom: func() {
|
||||
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
|
||||
},
|
||||
getKeys: func() {
|
||||
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
|
||||
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
|
||||
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
|
||||
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
|
||||
updateBottom: func(notification) {
|
||||
foreach(var update_item_bottom; me.updateItemsBottom)
|
||||
{
|
||||
update_item_bottom.update(notification);
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
|
||||
if (me.units) {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
|
||||
}
|
||||
me["GW"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["GW"].setText(sprintf("%s", "-----"));
|
||||
me["GW"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
|
||||
me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
||||
me["SAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["SAT"].setText(sprintf("%s", "XX"));
|
||||
me["SAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
|
||||
me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
||||
me["TAT"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["TAT"].setText(sprintf("%s", "XX"));
|
||||
me["TAT"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
update: func(notification) {
|
||||
me.updatePower();
|
||||
|
||||
if (me.test.getVisible() == 1) {
|
||||
me.updateTest(notification);
|
||||
}
|
||||
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var update_item; me.update_items)
|
||||
{
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
me.updateBottom(notification);
|
||||
},
|
||||
updatePower: func() {
|
||||
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
|
||||
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(1);
|
||||
} else {
|
||||
me.group.setVisible(1);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
me.test.setVisible(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var input = {
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
||||
}
|
|
@ -13,10 +13,21 @@ var SystemDisplayPageRecipient =
|
|||
if (notification.NotificationType == "FrameNotification")
|
||||
{
|
||||
if (SDRecipient.Page == nil) {
|
||||
SDRecipient.Page = SystemDisplayPageRecipient.pageList.apu;
|
||||
SDRecipient.Page = SystemDisplayPageRecipient.pageList.door;
|
||||
}
|
||||
if (math.mod(notifications.frameNotification.FrameCount,2) == 0) {
|
||||
SDRecipient.Page.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.apu.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.bleed.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.cond.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.door.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.elec.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.eng.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.fctl.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.fuel.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.hyd.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.press.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.sts.update(notification);
|
||||
SystemDisplayPageRecipient.pageList.wheel.update(notification);
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_OK;
|
||||
}
|
||||
|
@ -25,7 +36,18 @@ var SystemDisplayPageRecipient =
|
|||
return SDRecipient;
|
||||
},
|
||||
pageList: {
|
||||
apu: canvas_lowerECAMPageApu.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg"),
|
||||
apu: canvas_lowerECAMPageApu.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg","apu"),
|
||||
bleed: canvas_lowerECAMPageBleed.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/bleed.svg","bleed"),
|
||||
cond: canvas_lowerECAMPageCond.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/cond.svg","cond"),
|
||||
door: canvas_lowerECAMPageDoor.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/door.svg","door"),
|
||||
elec: canvas_lowerECAMPageElec.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/elec.svg","elec"),
|
||||
eng: canvas_lowerECAMPageEng.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/eng.svg","eng"),
|
||||
fctl: canvas_lowerECAMPageFctl.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fctl.svg","fctl"),
|
||||
fuel: canvas_lowerECAMPageFuel.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fuel.svg","fuel"),
|
||||
hyd: canvas_lowerECAMPageHyd.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/hyd.svg","hyd"),
|
||||
press: canvas_lowerECAMPagePress.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/press.svg","press"),
|
||||
sts: canvas_lowerECAMPageSts.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/status.svg","sts"),
|
||||
wheel: canvas_lowerECAMPageWheel.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/wheel.svg","wheel")
|
||||
},
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue