2021-07-08 11:34:30 +00:00
|
|
|
# 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();
|
|
|
|
|
2021-07-08 11:34:30 +00:00
|
|
|
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
}),
|
2021-07-08 11:34:30 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
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
|
|
|
},
|
2021-07-08 11:34:30 +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) {
|
2021-07-08 14:38:24 +00:00
|
|
|
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
|
2021-07-08 11:34:30 +00:00
|
|
|
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) {
|
2021-07-08 14:38:24 +00:00
|
|
|
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
|
2021-07-08 11:34:30 +00:00
|
|
|
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);
|
2021-07-08 16:19:27 +00:00
|
|
|
# don't hide the test group; just let whichever page is active control it
|
2021-07-08 11:34:30 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
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",
|
2021-07-08 11:34:30 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
foreach (var name; keys(input)) {
|
|
|
|
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
|
|
|
|
}
|