A/C STATUS page works; deleting works; it won't yet add at the first index (it _does_ add the waypoint to db but doesn't add to the flightplan :(
This commit is contained in:
parent
7b6f861960
commit
eb37ea57fc
5 changed files with 103 additions and 46 deletions
|
@ -727,7 +727,18 @@ var canvas_MCDU_base = {
|
||||||
me["FUELPRED"].hide();
|
me["FUELPRED"].hide();
|
||||||
me["PROG"].hide();
|
me["PROG"].hide();
|
||||||
me["PERFTO"].hide();
|
me["PERFTO"].hide();
|
||||||
me["arrowsDepArr"].hide();
|
me["arrowsDepArr"].show();
|
||||||
|
me["arrow1L"].hide();
|
||||||
|
me["arrow2L"].hide();
|
||||||
|
me["arrow3L"].hide();
|
||||||
|
me["arrow4L"].hide();
|
||||||
|
me["arrow5L"].hide();
|
||||||
|
me["arrow1R"].hide();
|
||||||
|
me["arrow2R"].hide();
|
||||||
|
me["arrow3R"].hide();
|
||||||
|
me["arrow4R"].hide();
|
||||||
|
me["arrow5R"].show();
|
||||||
|
me["arrow5R"].setColor(getprop("/MCDUC/colors/blu/r"),getprop("/MCDUC/colors/blu/g"),getprop("/MCDUC/colors/blu/b"));
|
||||||
me["PERFAPPR"].hide();
|
me["PERFAPPR"].hide();
|
||||||
me["PERFGA"].hide();
|
me["PERFGA"].hide();
|
||||||
me["Simple_Title"].show();
|
me["Simple_Title"].show();
|
||||||
|
@ -742,8 +753,8 @@ var canvas_MCDU_base = {
|
||||||
me["Simple_L0S"].hide();
|
me["Simple_L0S"].hide();
|
||||||
me.showLeftS(1, 1, 1, -1, 1, 1);
|
me.showLeftS(1, 1, 1, -1, 1, 1);
|
||||||
me.showLeftArrow(-1, -1, 1, -1, -1, -1);
|
me.showLeftArrow(-1, -1, 1, -1, -1, -1);
|
||||||
me.showRight(-1, 1, -1, -1, -1, 1);
|
me.showRight(-1, 1, -1, 1, 1, 1);
|
||||||
me.showRightS(-1, -1, -1, -1, -1, 1);
|
me.showRightS(-1, -1, -1, 1, 1, 1);
|
||||||
me.showRightArrow(-1, -1, -1, -1, -1, 1);
|
me.showRightArrow(-1, -1, -1, -1, -1, 1);
|
||||||
|
|
||||||
me.fontLeft(default, default, default, default, symbol, default);
|
me.fontLeft(default, default, default, default, symbol, default);
|
||||||
|
@ -752,31 +763,59 @@ var canvas_MCDU_base = {
|
||||||
me.fontRightS(default, default, default, default, default, default);
|
me.fontRightS(default, default, default, default, default, default);
|
||||||
|
|
||||||
me.fontSizeLeft(normal, normal, normal, normal, small, normal);
|
me.fontSizeLeft(normal, normal, normal, normal, small, normal);
|
||||||
me.fontSizeRight(normal, normal, normal, normal, normal, normal);
|
me.fontSizeRight(normal, normal, normal, small, normal, normal);
|
||||||
|
|
||||||
me.colorLeft("grn", "blu", "blu", "wht", "blu", "grn");
|
me.colorLeft("grn", "blu", "blu", "wht", "blu", "grn");
|
||||||
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||||
me.colorLeftArrow("wht", "blu", "blu", "wht", "wht", "wht");
|
me.colorLeftArrow("wht", "blu", "blu", "wht", "wht", "wht");
|
||||||
me.colorRight("wht", "grn", "wht", "wht", "wht", "wht");
|
me.colorRight("wht", "grn", "wht", "grn", "blu", "wht");
|
||||||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
me.colorRightS("wht", "wht", "wht", "wht", "grn", "wht");
|
||||||
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||||
|
|
||||||
|
|
||||||
|
me["Simple_L5"].setText("[ ]");
|
||||||
|
me["Simple_L6"].setText("+4.0/+0.0");
|
||||||
|
me["Simple_L1S"].setText(" ENG");
|
||||||
|
me["Simple_L2S"].setText(" ACTIVE NAV DATA BASE");
|
||||||
|
me["Simple_L3S"].setText(" SECOND NAV DATA BASE");
|
||||||
|
me["Simple_L5S"].setText("CHG CODE");
|
||||||
|
me["Simple_L6S"].setText("IDLE/PERF");
|
||||||
|
me["Simple_R6"].setText("STATUS/XLOAD ");
|
||||||
|
me["Simple_R6S"].setText("SOFTWARE ");
|
||||||
|
me["Simple_R4S"].setText("PILOT STORED ");
|
||||||
|
me["Simple_R4"].setText("00RTES 00RWYS ");
|
||||||
|
me["Simple_R5"].setText("DELETE ALL ");
|
||||||
|
|
||||||
pageSwitch[i].setBoolValue(1);
|
pageSwitch[i].setBoolValue(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
me["Simple_L1"].setText(sprintf("%s", engType.getValue()));
|
me["Simple_L1"].setText(sprintf("%s", engType.getValue()));
|
||||||
me["Simple_L2"].setText(sprintf("%s", " " ~ database1.getValue()));
|
me["Simple_L2"].setText(sprintf("%s", " " ~ database1.getValue()));
|
||||||
me["Simple_L3"].setText(sprintf("%s", " " ~ database2.getValue()));
|
me["Simple_L3"].setText(sprintf("%s", " " ~ database2.getValue()));
|
||||||
me["Simple_L5"].setText("[ ]");
|
|
||||||
me["Simple_L6"].setText("+4.0/+0.0");
|
|
||||||
me["Simple_L1S"].setText(" ENG");
|
|
||||||
me["Simple_L2S"].setText(" ACTIVE NAV DATA BASE");
|
|
||||||
me["Simple_L3S"].setText(" SECOND NAV DATA BASE");
|
|
||||||
me["Simple_L5S"].setText("CHG CODE");
|
|
||||||
me["Simple_L6S"].setText("IDLE/PERF");
|
|
||||||
me["Simple_R2"].setText(sprintf("%s", databaseCode.getValue() ~ " "));
|
me["Simple_R2"].setText(sprintf("%s", databaseCode.getValue() ~ " "));
|
||||||
me["Simple_R6"].setText("STATUS/XLOAD ");
|
|
||||||
me["Simple_R6S"].setText("SOFTWARE ");
|
if (fmgc.WaypointDatabase.getCount() >= 1) {
|
||||||
|
me["Simple_R4"].show();
|
||||||
|
me["Simple_R5"].show();
|
||||||
|
me["Simple_R4S"].show();
|
||||||
|
me["Simple_R5S"].show();
|
||||||
|
me["arrow5R"].show();
|
||||||
|
me["Simple_R5S"].setText(sprintf("%02.0f", fmgc.WaypointDatabase.getCount()) ~ "WPTS 00NAVS ");
|
||||||
|
} else {
|
||||||
|
me["Simple_R4"].hide();
|
||||||
|
me["Simple_R5"].hide();
|
||||||
|
me["Simple_R4S"].hide();
|
||||||
|
me["Simple_R5S"].hide();
|
||||||
|
me["arrow5R"].hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getprop("/FMGC/status/phase") == 0 or getprop("/FMGC/status/phase") == 7) {
|
||||||
|
me["Simple_L5"].show();
|
||||||
|
me["Simple_L5S"].show();
|
||||||
|
} else {
|
||||||
|
me["Simple_L5"].hide();
|
||||||
|
me["Simple_L5S"].hide();
|
||||||
|
}
|
||||||
} else if (page == "DATA") {
|
} else if (page == "DATA") {
|
||||||
if (!pageSwitch[i].getBoolValue()) {
|
if (!pageSwitch[i].getBoolValue()) {
|
||||||
me["Simple"].show();
|
me["Simple"].show();
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
# A3XX FMGC Waypoint database
|
# A3XX FMGC Waypoint database
|
||||||
# Copyright (c) 2020 Josh Davidson (Octal450) and Jonathan Redpath (legoboyvdlp)
|
# Copyright (c) 2020 Josh Davidson (Octal450) and Jonathan Redpath (legoboyvdlp)
|
||||||
|
|
||||||
|
var nilTree = {
|
||||||
|
"latitude": 0,
|
||||||
|
"longitude": 0,
|
||||||
|
"ident": "",
|
||||||
|
};
|
||||||
|
|
||||||
var WaypointDatabase = {
|
var WaypointDatabase = {
|
||||||
waypointsVec: [],
|
waypointsVec: [],
|
||||||
# addWP - adds pilot waypoint to waypoints vector
|
# addWP - adds pilot waypoint to waypoints vector
|
||||||
|
@ -36,7 +42,14 @@ var WaypointDatabase = {
|
||||||
},
|
},
|
||||||
# delete - empties waypoints vector
|
# delete - empties waypoints vector
|
||||||
delete: func() {
|
delete: func() {
|
||||||
me.waypointsVec = [];
|
var noDel = 0;
|
||||||
|
for (var i = 0; i < me.getSize(); i = i + 1) {
|
||||||
|
if (me.waypointsVec[i] != nil) {
|
||||||
|
if (fmgc.flightPlanController.flightplans[2].indexOfWP(me.waypointsVec[i].wpGhost) == -1) { # docs says only checks active and secondary
|
||||||
|
me.waypointsVec[i] = nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
# deleteAtIndex - delete at specific index. Set to nil, so it still exists in vector
|
# deleteAtIndex - delete at specific index. Set to nil, so it still exists in vector
|
||||||
deleteAtIndex: func(index) {
|
deleteAtIndex: func(index) {
|
||||||
|
@ -84,9 +97,7 @@ var WaypointDatabase = {
|
||||||
},
|
},
|
||||||
# write - write to file, as a delimited string
|
# write - write to file, as a delimited string
|
||||||
write: func() {
|
write: func() {
|
||||||
var path = getprop("/sim/fg-home") ~ "/Export/savedWaypoints.txt";
|
var path = getprop("/sim/fg-home") ~ "/Export/savedWaypoints.xml";
|
||||||
var file = io.open(path, "wb"); # open in write mode
|
|
||||||
|
|
||||||
var tree = {
|
var tree = {
|
||||||
"waypoints": {
|
"waypoints": {
|
||||||
|
|
||||||
|
@ -99,12 +110,13 @@ var WaypointDatabase = {
|
||||||
if (me.waypointsVec[i] != nil) {
|
if (me.waypointsVec[i] != nil) {
|
||||||
node.getChild("waypoints").addChild(me.waypointsVec[i].tree);
|
node.getChild("waypoints").addChild(me.waypointsVec[i].tree);
|
||||||
debug.dump(me.waypointsVec[i].tree);
|
debug.dump(me.waypointsVec[i].tree);
|
||||||
|
} else {
|
||||||
|
node.getChild("waypoints").addChild(nilTree);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
debug.dump(node);
|
debug.dump(node);
|
||||||
|
|
||||||
io.writexml(file, node); # write the data
|
io.writexml(path, node); # write the data
|
||||||
io.close(file); # close (and flush) the file stream
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -404,7 +404,7 @@ var flightPlanController = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
insertFix: func(text, index, plan, override = 0, overrideIndex = -1) { # override - means always choose [0]
|
insertFix: func(text, index, plan, override = 0, overrideIndex = -1) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -437,30 +437,6 @@ var flightPlanController = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
insertLatLonFix: func(text, index, plan) {
|
|
||||||
if (index == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var lat = split("/", text)[0];
|
|
||||||
var lon = split("/", text)[1];
|
|
||||||
var latDecimal = mcdu.stringToDegrees(lat, "lat");
|
|
||||||
var lonDecimal = mcdu.stringToDegrees(lon, "lon");
|
|
||||||
|
|
||||||
if (latDecimal > 90 or latDecimal < -90 or lonDecimal > 180 or lonDecimal < -180) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
var waypoint = pilotWaypoint.new({lat: latDecimal, lon: lonDecimal}, "LL");
|
|
||||||
var addDb = WaypointDatabase.addWP(waypoint);
|
|
||||||
if (addDb != 2) {
|
|
||||||
return addDb;
|
|
||||||
}
|
|
||||||
me.flightplans[plan].insertWP(waypoint.wpGhost, index);
|
|
||||||
me.addDiscontinuity(index + 1, plan);
|
|
||||||
me.flightPlanChanged(plan);
|
|
||||||
return 2;
|
|
||||||
},
|
|
||||||
|
|
||||||
insertNavaid: func(text, index, plan, override = 0, overrideIndex = -1) {
|
insertNavaid: func(text, index, plan, override = 0, overrideIndex = -1) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -510,6 +486,32 @@ var flightPlanController = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
insertLatLonFix: func(text, index, plan) {
|
||||||
|
if (index == 0) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var lat = split("/", text)[0];
|
||||||
|
var lon = split("/", text)[1];
|
||||||
|
var latDecimal = mcdu.stringToDegrees(lat, "lat");
|
||||||
|
var lonDecimal = mcdu.stringToDegrees(lon, "lon");
|
||||||
|
|
||||||
|
if (latDecimal > 90 or latDecimal < -90 or lonDecimal > 180 or lonDecimal < -180) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var waypoint = pilotWaypoint.new({lat: latDecimal, lon: lonDecimal}, "LL");
|
||||||
|
var addDb = WaypointDatabase.addWP(waypoint);
|
||||||
|
if (addDb != 2) {
|
||||||
|
return addDb;
|
||||||
|
}
|
||||||
|
|
||||||
|
me.flightplans[plan].insertWP(waypoint.wpGhost, index);
|
||||||
|
me.addDiscontinuity(index + 1, plan);
|
||||||
|
me.flightPlanChanged(plan);
|
||||||
|
return 2;
|
||||||
|
},
|
||||||
|
|
||||||
# getWPforPBD - parse scratchpad text to find waypoint ghost for PBD
|
# getWPforPBD - parse scratchpad text to find waypoint ghost for PBD
|
||||||
# args: text, index, plan
|
# args: text, index, plan
|
||||||
# text: scratchpad text
|
# text: scratchpad text
|
||||||
|
|
|
@ -538,6 +538,8 @@ var rskbutton = func(btn, i) {
|
||||||
initInputA("R5",i);
|
initInputA("R5",i);
|
||||||
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "INITB") {
|
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "INITB") {
|
||||||
initInputB("R5",i);
|
initInputB("R5",i);
|
||||||
|
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "STATUS") {
|
||||||
|
statusInput("R5",i);
|
||||||
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "PERFTO") {
|
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "PERFTO") {
|
||||||
perfTOInput("R5",i);
|
perfTOInput("R5",i);
|
||||||
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "PERFAPPR") {
|
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "PERFAPPR") {
|
||||||
|
|
|
@ -5,5 +5,7 @@
|
||||||
var statusInput = func(key, i) {
|
var statusInput = func(key, i) {
|
||||||
if (key == "L3") {
|
if (key == "L3") {
|
||||||
fmgc.switchDatabase();
|
fmgc.switchDatabase();
|
||||||
|
} elsif (key == "R5") {
|
||||||
|
fmgc.WaypointDatabase.delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue