1
0
Fork 0
A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas

746 lines
25 KiB
Text
Raw Normal View History

# 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
2021-07-16 14:34:17 +00:00
obj["leftuplock"].hide();
obj["noseuplock"].hide();
obj["rightuplock"].hide();
obj["tirepress1"].hide();
obj["tirepress2"].hide();
obj["tirepress3"].hide();
obj["tirepress4"].hide();
obj["tirepress5"].hide();
obj["tirepress6"].hide();
obj.update_items = [
2021-07-16 14:34:17 +00:00
props.UpdateManager.FromHashList(["gearPosNorm","gearPosNorm1","gearPosNorm2","gearLever"], nil, func(val) {
if (val.gearLever and (val.gearPosNorm != 1 or val.gearPosNorm1 != 1 or val.gearPosNorm2 != 1)) {
obj["lgctltext"].show();
} elsif (!val.gearLever and (val.gearPosNorm != 0 or val.gearPosNorm1 != 0 or val.gearPosNorm2 != 0)) {
obj["lgctltext"].show();
} else {
obj["lgctltext"].hide();
}
}),
2021-07-25 00:12:54 +00:00
props.UpdateManager.FromHashValue("gearPosNorm", nil, func(val) {
if (val == 0) {
2021-07-16 14:34:17 +00:00
obj["Triangle-Nose1"].hide();
obj["Triangle-Nose2"].hide();
} else {
obj["Triangle-Nose1"].show();
obj["Triangle-Nose2"].show();
}
if (val == 1) {
obj["Triangle-Nose1"].setColor(0.0509,0.7529,0.2941);
obj["Triangle-Nose2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Triangle-Nose1"].setColor(1,0,0);
obj["Triangle-Nose2"].setColor(1,0,0);
}
}),
2021-07-25 00:12:54 +00:00
props.UpdateManager.FromHashValue("gearPosNorm1", nil, func(val) {
if (val == 0) {
2021-07-16 14:34:17 +00:00
obj["Triangle-Left1"].hide();
obj["Triangle-Left2"].hide();
} else {
obj["Triangle-Left1"].show();
obj["Triangle-Left2"].show();
}
if (val == 1) {
obj["Triangle-Left1"].setColor(0.0509,0.7529,0.2941);
obj["Triangle-Left2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Triangle-Left1"].setColor(1,0,0);
obj["Triangle-Left2"].setColor(1,0,0);
}
}),
2021-07-25 00:12:54 +00:00
props.UpdateManager.FromHashValue("gearPosNorm2", nil, func(val) {
if (val == 0) {
2021-07-16 14:34:17 +00:00
obj["Triangle-Right1"].hide();
obj["Triangle-Right2"].hide();
} else {
obj["Triangle-Right1"].show();
obj["Triangle-Right2"].show();
}
if (val == 1) {
obj["Triangle-Right1"].setColor(0.0509,0.7529,0.2941);
obj["Triangle-Right2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Triangle-Right1"].setColor(1,0,0);
obj["Triangle-Right2"].setColor(1,0,0);
}
}),
2021-07-25 00:12:54 +00:00
props.UpdateManager.FromHashList(["yellow","green","NWSSwitch","brakesMode","val.accumPressPsiPressPsi","leftBrakeFCS","rightBrakeFCS"], nil, func(val) {
2021-07-16 14:34:17 +00:00
if (val.NWSSwitch and val.yellow >= 1500) {
obj["NWStext"].hide();
obj["NWS"].hide();
obj["NWSrect"].hide();
} else if (!val.NWSSwitch and val.yellow >= 1500) {
obj["NWStext"].show();
obj["NWS"].show();
obj["NWS"].setColor(0.0509,0.7529,0.2941);
obj["NWSrect"].show();
} else {
obj["NWStext"].show();
obj["NWS"].show();
obj["NWS"].setColor(0.7333,0.3803,0);
obj["NWSrect"].show();
2021-07-25 00:12:54 +00:00
}
if ((val.yellow < 1500 and val.brakesMode == 1) or !val.NWSSwitch) {
2021-07-16 14:34:17 +00:00
obj["antiskidtext"].show();
obj["antiskidtext"].setColor(0.7333,0.3803,0);
obj["BSCUrect1"].show();
obj["BSCUrect2"].show();
obj["BSCU1"].show();
obj["BSCU2"].show();
2021-07-25 00:12:54 +00:00
} else {
obj["antiskidtext"].hide();
obj["BSCUrect1"].hide();
obj["BSCUrect2"].hide();
obj["BSCU1"].hide();
obj["BSCU2"].hide();
2021-07-16 14:34:17 +00:00
}
2021-07-25 00:12:54 +00:00
if (val.green >= 1500) {
2021-07-16 14:34:17 +00:00
obj["normbrkhyd"].setColor(0.0509,0.7529,0.2941);
2021-07-25 00:12:54 +00:00
} else {
obj["normbrkhyd"].setColor(0.7333,0.3803,0);
}
if (val.yellow >= 1500) {
obj["altnbrkhyd"].setColor(0.0509,0.7529,0.2941);
} else {
obj["altnbrkhyd"].setColor(0.7333,0.3803,0);
}
if (!val.NWSSwitch or val.green < 1500) {
2021-07-16 14:34:17 +00:00
obj["NORMbrk"].show();
obj["normbrk-rect"].show();
2021-07-25 00:12:54 +00:00
obj["normbrkhyd"].show();
} else {
obj["NORMbrk"].hide();
obj["normbrk-rect"].hide();
obj["normbrkhyd"].hide();
2021-07-16 14:34:17 +00:00
}
2021-07-25 00:12:54 +00:00
if (val.brakesMode != 2 or val.green < 1500 or val.yellow < 1500 or !val.NWSSwitch) {
2021-07-16 14:34:17 +00:00
obj["ALTNbrk"].hide();
obj["altnbrk-rect"].hide();
obj["altnbrkhyd"].hide();
} else {
obj["ALTNbrk"].show();
obj["altnbrk-rect"].show();
2021-07-25 00:12:54 +00:00
obj["altnbrkhyd"].show();
if (val.yellow < 1500 and val.accumPressPsi < 1500) {
obj["ALTNbrk"].setColor(0.7333,0.3803,0);
} else {
obj["ALTNbrk"].setColor(0.0509,0.7529,0.2941);
}
2021-07-16 14:34:17 +00:00
}
2021-07-25 00:12:54 +00:00
# TODO check the parking brake with nws switch off
2021-07-16 14:34:17 +00:00
if (val.brakesMode == 2 and val.accumPressPsi < 200 and val.yellow < 1500) {
2021-07-25 00:12:54 +00:00
obj["accuonlyarrow"].hide();
obj["accuonly"].hide();
2021-07-16 14:34:17 +00:00
obj["accupress_text"].show();
obj["brakearrow"].hide();
obj["accupress_text"].setColor(0.7333,0.3803,0);
} else if (val.brakesMode == 2 and val.accumPressPsi > 200 and val.yellow >= 1500){
2021-07-25 00:12:54 +00:00
obj["accuonlyarrow"].hide();
obj["accuonly"].hide();
2021-07-16 14:34:17 +00:00
obj["accupress_text"].show();
obj["brakearrow"].show();
obj["accupress_text"].setColor(0.0509,0.7529,0.2941);
} else if (val.brakesMode == 2 and val.accumPressPsi > 200 and val.yellow < 1500) {
obj["accuonlyarrow"].show();
obj["accuonly"].show();
obj["brakearrow"].hide();
obj["accupress_text"].hide();
} else {
obj["accuonlyarrow"].hide();
obj["accuonly"].hide();
obj["brakearrow"].hide();
obj["accupress_text"].hide();
}
2021-07-25 00:12:54 +00:00
if (val.brakesMode == 1) {
obj["releaseL1"].hide();
obj["releaseL2"].hide();
obj["releaseL3"].hide();
obj["releaseL4"].hide();
obj["releaseR1"].hide();
obj["releaseR2"].hide();
obj["releaseR3"].hide();
obj["releaseR4"].hide();
} else { # Display if the brakes are released and in alternate braking
if (val.leftBrakeFCS == 0) {
obj["releaseL1"].show();
obj["releaseL2"].show();
obj["releaseL3"].show();
obj["releaseL4"].show();
} else {
obj["releaseL1"].hide();
obj["releaseL2"].hide();
obj["releaseL3"].hide();
obj["releaseL4"].hide();
}
if (val.rightBrakeFCS == 0) {
obj["releaseR1"].show();
obj["releaseR2"].show();
obj["releaseR3"].show();
obj["releaseR4"].show();
} else {
obj["releaseR1"].hide();
obj["releaseR2"].hide();
obj["releaseR3"].hide();
obj["releaseR4"].hide();
}
}
2021-07-16 14:34:17 +00:00
}),
2021-07-25 00:12:54 +00:00
props.UpdateManager.FromHashList(["brakeAutobrkMode","NWSSwitch"], nil, func(val) {
2021-07-16 14:34:17 +00:00
if (val.brakeAutobrkMode == 0) {
obj["autobrkind"].hide();
} elsif (val.brakeAutobrkMode == 1) {
obj["autobrkind"].show();
obj["autobrkind"].setText(sprintf("%s", "LO"));
} elsif (val.brakeAutobrkMode == 2) {
obj["autobrkind"].show();
obj["autobrkind"].setText(sprintf("%s", "MED"));
} elsif (val.brakeAutobrkMode == 3) {
obj["autobrkind"].show();
obj["autobrkind"].setText(sprintf("%s", "MAX"));
}
2021-07-25 00:12:54 +00:00
if (val.brakeAutobrkMode != 0 or !val.NWSSwitch) {
2021-07-16 14:34:17 +00:00
obj["autobrk"].show();
} else {
obj["autobrk"].hide();
}
2021-07-25 00:12:54 +00:00
if (!val.NWSSwitch) {
obj["autobrk"].setColor(0.7333,0.3803,0);
} else {
obj["autobrk"].setColor(0.0509,0.7529,0.2941);
}
2021-07-16 14:34:17 +00:00
}),
props.UpdateManager.FromHashValue("brakeLeft1", 0.5, func(val) {
obj["braketemp1"].setText(sprintf("%s", math.round(val, 5)));
if (val > 300) {
obj["braketemp1"].setColor(0.7333,0.3803,0);
obj["toparc1"].setColor(0.7333,0.3803,0);
} else {
if (val > 100 and val <= 300) {
obj["toparc1"].setColor(0.0509,0.7529,0.2941);
} else {
obj["toparc1"].setColor(0.8078,0.8039,0.8078);
}
obj["braketemp1"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("brakeLeft2", 0.5, func(val) {
obj["braketemp2"].setText(sprintf("%s", math.round(val, 5)));
if (val > 300) {
obj["braketemp2"].setColor(0.7333,0.3803,0);
obj["toparc2"].setColor(0.7333,0.3803,0);
} else {
if (val > 100 and val <= 300) {
obj["toparc2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["toparc2"].setColor(0.8078,0.8039,0.8078);
}
obj["braketemp2"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("brakeRight1", 0.5, func(val) {
obj["braketemp3"].setText(sprintf("%s", math.round(val, 5)));
if (val > 300) {
obj["braketemp3"].setColor(0.7333,0.3803,0);
obj["toparc3"].setColor(0.7333,0.3803,0);
} else {
if (val > 100 and val <= 300) {
obj["toparc3"].setColor(0.0509,0.7529,0.2941);
} else {
obj["toparc3"].setColor(0.8078,0.8039,0.8078);
}
obj["braketemp3"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("brakeRight2", 0.5, func(val) {
obj["braketemp4"].setText(sprintf("%s", math.round(val, 5)));
if (val > 300) {
obj["braketemp4"].setColor(0.7333,0.3803,0);
obj["toparc4"].setColor(0.7333,0.3803,0);
} else {
if (val > 100 and val <= 300) {
obj["toparc4"].setColor(0.0509,0.7529,0.2941);
} else {
obj["toparc4"].setColor(0.8078,0.8039,0.8078);
}
obj["braketemp4"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("wheelLeftDoor", 0.5, func(val) {
obj["leftdoor"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("wheelNoseLeftDoor", 0.5, func(val) {
obj["nosegeardoorL"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("wheelNoseRightDoor", 0.5, func(val) {
obj["nosegeardoorR"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("wheelRightDoor", 0.5, func(val) {
obj["rightdoor"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("wheelLeftDoorPos", 0.01, func(val) {
if (val == 0) {
obj["leftdoor"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["leftdoor"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("wheelNoseDoorPos", 0.01, func(val) {
if (val == 0) {
obj["nosegeardoorL"].setColorFill(0.0509,0.7529,0.2941);
obj["nosegeardoorR"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["nosegeardoorL"].setColorFill(0.7333,0.3803,0);
obj["nosegeardoorR"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("wheelRightDoorPos", 0.01, func(val) {
if (val == 0) {
obj["rightdoor"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["rightdoor"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("spoilerL1", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler1Lex"].hide();
obj["spoiler1Lrt"].show();
} else {
obj["spoiler1Lrt"].hide();
obj["spoiler1Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL2", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler2Lex"].hide();
obj["spoiler2Lrt"].show();
} else {
obj["spoiler2Lrt"].hide();
obj["spoiler2Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL3", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler3Lex"].hide();
obj["spoiler3Lrt"].show();
} else {
obj["spoiler3Lrt"].hide();
obj["spoiler3Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL4", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler4Lex"].hide();
obj["spoiler4Lrt"].show();
} else {
obj["spoiler4Lrt"].hide();
obj["spoiler4Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL5", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler5Lex"].hide();
obj["spoiler5Lrt"].show();
} else {
obj["spoiler5Lrt"].hide();
obj["spoiler5Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR1", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler1Rex"].hide();
obj["spoiler1Rrt"].show();
} else {
obj["spoiler1Rrt"].hide();
obj["spoiler1Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR2", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler2Rex"].hide();
obj["spoiler2Rrt"].show();
} else {
obj["spoiler2Rrt"].hide();
obj["spoiler2Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR3", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler3Rex"].hide();
obj["spoiler3Rrt"].show();
} else {
obj["spoiler3Rrt"].hide();
obj["spoiler3Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR4", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler4Rex"].hide();
obj["spoiler4Rrt"].show();
} else {
obj["spoiler4Rrt"].hide();
obj["spoiler4Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR5", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler5Rex"].hide();
obj["spoiler5Rrt"].show();
} else {
obj["spoiler5Rrt"].hide();
obj["spoiler5Rex"].show();
}
}),
props.UpdateManager.FromHashList(["spoilerL1Failure","spoilerL1","green"], nil, func(val) {
if (val.spoilerL1Failure or val.green < 1500) {
obj["spoiler1Lex"].setColor(0.7333,0.3803,0);
obj["spoiler1Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL1 < 1.5) {
obj["spoiler1Lf"].show();
} else {
obj["spoiler1Lf"].hide();
}
} else {
obj["spoiler1Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL2Failure","spoilerL2","yellow"], nil, func(val) {
if (val.spoilerL2Failure or val.yellow < 1500) {
obj["spoiler2Lex"].setColor(0.7333,0.3803,0);
obj["spoiler2Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL2 < 1.5) {
obj["spoiler2Lf"].show();
} else {
obj["spoiler2Lf"].hide();
}
} else {
obj["spoiler2Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL3Failure","spoilerL3","blue"], nil, func(val) {
if (val.spoilerL3Failure or val.blue < 1500) {
obj["spoiler3Lex"].setColor(0.7333,0.3803,0);
obj["spoiler3Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL3 < 1.5) {
obj["spoiler3Lf"].show();
} else {
obj["spoiler3Lf"].hide();
}
} else {
obj["spoiler3Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL4Failure","spoilerL4","yellow"], nil, func(val) {
if (val.spoilerL4Failure or val.yellow < 1500) {
obj["spoiler4Lex"].setColor(0.7333,0.3803,0);
obj["spoiler4Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL4 < 1.5) {
obj["spoiler4Lf"].show();
} else {
obj["spoiler4Lf"].hide();
}
} else {
obj["spoiler4Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL5Failure","spoilerL5","green"], nil, func(val) {
if (val.spoilerL5Failure or val.green < 1500) {
obj["spoiler5Lex"].setColor(0.7333,0.3803,0);
obj["spoiler5Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL5 < 1.5) {
obj["spoiler5Lf"].show();
} else {
obj["spoiler5Lf"].hide();
}
} else {
obj["spoiler5Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR1Failure","spoilerR1","green"], nil, func(val) {
if (val.spoilerR1Failure or val.green < 1500) {
obj["spoiler1Rex"].setColor(0.7333,0.3803,0);
obj["spoiler1Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR1 < 1.5) {
obj["spoiler1Rf"].show();
} else {
obj["spoiler1Rf"].hide();
}
} else {
obj["spoiler1Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR2Failure","spoilerR2","yellow"], nil, func(val) {
if (val.spoilerR2Failure or val.yellow < 1500) {
obj["spoiler2Rex"].setColor(0.7333,0.3803,0);
obj["spoiler2Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR2 < 1.5) {
obj["spoiler2Rf"].show();
} else {
obj["spoiler2Rf"].hide();
}
} else {
obj["spoiler2Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR3Failure","spoilerR3","blue"], nil, func(val) {
if (val.spoilerR3Failure or val.blue < 1500) {
obj["spoiler3Rex"].setColor(0.7333,0.3803,0);
obj["spoiler3Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR3 < 1.5) {
obj["spoiler3Rf"].show();
} else {
obj["spoiler3Rf"].hide();
}
} else {
obj["spoiler3Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR4Failure","spoilerR4","yellow"], nil, func(val) {
if (val.spoilerR4Failure or val.yellow < 1500) {
obj["spoiler4Rex"].setColor(0.7333,0.3803,0);
obj["spoiler4Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR4 < 1.5) {
obj["spoiler4Rf"].show();
} else {
obj["spoiler4Rf"].hide();
}
} else {
obj["spoiler4Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR5Failure","spoilerR5","green"], nil, func(val) {
if (val.spoilerR5Failure or val.green < 1500) {
obj["spoiler5Rex"].setColor(0.7333,0.3803,0);
obj["spoiler5Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR5 < 1.5) {
obj["spoiler5Rf"].show();
} else {
obj["spoiler5Rf"].hide();
}
} else {
obj["spoiler5Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Rf"].hide();
}
}),
];
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() {
2021-07-16 14:34:17 +00:00
return["lgctltext","NORMbrk","NWStext","leftdoor","rightdoor","nosegeardoorL","nosegeardoorR",
"autobrk","autobrkind","NWS","NWSrect","normbrk-rect","altnbrk","normbrkhyd","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex",
"spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex","spoiler1Lrt","spoiler2Lex","spoiler2Lrt",
"spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf",
"spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf","spoiler5Lf","ALTNbrk","altnbrkhyd","altnbrk-rect","antiskidtext","brakearrow","accupress_text",
"accuonlyarrow","accuonly","braketemp1","normbrkhyd","braketemp2","braketemp3","braketemp4","toparc1","toparc2","toparc3","toparc4","leftuplock",
"noseuplock","rightuplock","Triangle-Left1","Triangle-Left2","Triangle-Nose1","Triangle-Nose2","Triangle-Right1","Triangle-Right2","BSCUrect1",
2021-07-25 00:12:54 +00:00
"BSCUrect2","BSCU1","BSCU2","tirepress1","tirepress2","tirepress3","tirepress4","tirepress5","tirepress6","releaseL1","releaseL2","releaseR1","releaseR2",
"releaseL3","releaseL4","releaseR3","releaseR4"];
2021-07-16 14:34:17 +00:00
},
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);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
2021-07-16 14:34:17 +00:00
brakeAutobrkMode: "/controls/autobrake/mode",
brakeLeft1: "/gear/gear[1]/L1brake-temp-degc",
brakeLeft2: "/gear/gear[1]/L2brake-temp-degc",
brakeRight1: "/gear/gear[2]/R3brake-temp-degc",
brakeRight2: "/gear/gear[2]/R4brake-temp-degc",
wheelLeftDoor: "/ECAM/Lower/door-left",
wheelNoseLeftDoor: "/ECAM/Lower/door-nose-left",
wheelNoseRightDoor: "/ECAM/Lower/door-nose-right",
wheelRightDoor: "/ECAM/Lower/door-right",
wheelLeftDoorPos: "/systems/hydraulic/gear/door-left",
wheelNoseDoorPos: "/systems/hydraulic/gear/door-nose",
wheelRightDoorPos: "/systems/hydraulic/gear/door-right",
spoilerL1: "/fdm/jsbsim/hydraulics/spoiler-l1/final-deg",
spoilerL2: "/fdm/jsbsim/hydraulics/spoiler-l2/final-deg",
spoilerL3: "/fdm/jsbsim/hydraulics/spoiler-l3/final-deg",
spoilerL4: "/fdm/jsbsim/hydraulics/spoiler-l4/final-deg",
spoilerL5: "/fdm/jsbsim/hydraulics/spoiler-l5/final-deg",
spoilerR1: "/fdm/jsbsim/hydraulics/spoiler-r1/final-deg",
spoilerR2: "/fdm/jsbsim/hydraulics/spoiler-r2/final-deg",
spoilerR3: "/fdm/jsbsim/hydraulics/spoiler-r3/final-deg",
spoilerR4: "/fdm/jsbsim/hydraulics/spoiler-r4/final-deg",
spoilerR5: "/fdm/jsbsim/hydraulics/spoiler-r5/final-deg",
spoilerL1Failure: "/systems/failures/spoilers/spoiler-l1",
spoilerL2Failure: "/systems/failures/spoilers/spoiler-l2",
spoilerL3Failure: "/systems/failures/spoilers/spoiler-l3",
spoilerL4Failure: "/systems/failures/spoilers/spoiler-l4",
spoilerL5Failure: "/systems/failures/spoilers/spoiler-l5",
spoilerR1Failure: "/systems/failures/spoilers/spoiler-r1",
spoilerR2Failure: "/systems/failures/spoilers/spoiler-r2",
spoilerR3Failure: "/systems/failures/spoilers/spoiler-r3",
spoilerR4Failure: "/systems/failures/spoilers/spoiler-r4",
spoilerR5Failure: "/systems/failures/spoilers/spoiler-r5",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}