638 lines
No EOL
20 KiB
Text
638 lines
No EOL
20 KiB
Text
var isNoSid = [0, 0, 0];
|
|
var isNoTransDep = [0, 0, 0];
|
|
|
|
var departurePage = {
|
|
title: [nil, nil, nil],
|
|
subtitle: [nil, nil],
|
|
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
|
L1: [nil, nil, "ack"], # content, title, colour
|
|
L2: [nil, nil, "ack"],
|
|
L3: [nil, nil, "ack"],
|
|
L4: [nil, nil, "ack"],
|
|
L5: [nil, nil, "ack"],
|
|
L6: [nil, nil, "ack"],
|
|
C1: [nil, nil, "ack"],
|
|
C2: [nil, nil, "ack"],
|
|
C3: [nil, nil, "ack"],
|
|
C4: [nil, nil, "ack"],
|
|
C5: [nil, nil, "ack"],
|
|
C6: [nil, nil, "ack"],
|
|
R1: [nil, nil, "ack"],
|
|
R2: [nil, nil, "ack"],
|
|
R3: [nil, nil, "ack"],
|
|
R4: [nil, nil, "ack"],
|
|
R5: [nil, nil, "ack"],
|
|
R6: [nil, nil, "ack"],
|
|
depAirport: nil,
|
|
runways: nil,
|
|
selectedRunway: nil,
|
|
selectedSID: nil,
|
|
selectedTransition: nil,
|
|
computer: nil,
|
|
enableScrollRwy: 0,
|
|
enableScrollSids: 0,
|
|
enableScrollTrans: 0,
|
|
scrollRwy: 0,
|
|
scrollSids: 0,
|
|
scrollTrans: 0,
|
|
activePage: 0, # runways, sids, trans
|
|
_runways: nil,
|
|
_sids: nil,
|
|
_transitions: nil,
|
|
runways: [],
|
|
sids: [],
|
|
transitions: [],
|
|
new: func(icao, computer) {
|
|
var page = {parents:[departurePage]};
|
|
page.id = icao;
|
|
page.computer = computer;
|
|
page._setupFirstTime();
|
|
page._setupPageWithData();
|
|
return page;
|
|
},
|
|
del: func() {
|
|
return nil;
|
|
},
|
|
reset: func() {
|
|
isNoSid[me.computer] = 0;
|
|
isNoTransDep[me.computer] = 0;
|
|
me.selectedSID = nil;
|
|
me.selectedTransition = nil;
|
|
},
|
|
_setupFirstTime: func() {
|
|
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
|
if (fmgc.flightPlanController.flightplans[2].departure_runway != nil) {
|
|
me.selectedRunway = fmgc.flightPlanController.flightplans[2].departure_runway;
|
|
}
|
|
if (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
|
me.selectedSID = fmgc.flightPlanController.flightplans[2].sid;
|
|
isNoSid[me.computer] = 0;
|
|
} elsif (isNoSid[2] == 1) {
|
|
me.selectedSID = "NO SID";
|
|
}
|
|
|
|
if (isNoTransDep[2]) {
|
|
me.selectedTransition = "NO TRANS";
|
|
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
|
me.selectedTransition = fmgc.flightPlanController.flightplans[2].sid_trans;
|
|
}
|
|
} else {
|
|
if (fmgc.flightPlanController.flightplans[me.computer].departure_runway != nil) {
|
|
me.selectedRunway = fmgc.flightPlanController.flightplans[me.computer].departure_runway;
|
|
} elsif (fmgc.flightPlanController.flightplans[2].departure_runway != nil) {
|
|
me.selectedRunway = fmgc.flightPlanController.flightplans[2].departure_runway;
|
|
}
|
|
if (fmgc.flightPlanController.flightplans[me.computer].sid != nil) {
|
|
me.selectedSID = fmgc.flightPlanController.flightplans[me.computer].sid;
|
|
isNoSid[me.computer] = 0;
|
|
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
|
me.selectedSID = fmgc.flightPlanController.flightplans[2].sid;
|
|
isNoSid[me.computer] = 0;
|
|
} elsif (isNoSid[me.computer] == 1) {
|
|
me.selectedSID = "NO SID";
|
|
}
|
|
|
|
if (isNoTransDep[me.computer] or isNoTransDep[2]) {
|
|
me.selectedTransition = "NO TRANS";
|
|
} elsif (fmgc.flightPlanController.flightplans[me.computer].sid != nil) {
|
|
me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].sid_trans;
|
|
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
|
me.selectedTransition = fmgc.flightPlanController.flightplans[2].sid_trans;
|
|
}
|
|
}
|
|
},
|
|
_setupPageWithData: func() {
|
|
me.title = ["DEPARTURE", " FROM ", left(me.id, 4)];
|
|
|
|
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
|
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
|
|
|
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
|
me.L6 = [" RETURN END", nil, "wht"];
|
|
} else {
|
|
me.L6 = [" F-PLN", " TMPY", "yel"];
|
|
me.arrowsColour[0][5] = "yel";
|
|
}
|
|
|
|
if (me.activePage == 0) {
|
|
me.updateRunways();
|
|
} else {
|
|
me.updateSIDs();
|
|
me.updateTransitions();
|
|
}
|
|
|
|
me.updateActiveRunway();
|
|
me.updateActiveSIDs();
|
|
me.updateActiveTransitions();
|
|
},
|
|
_clearPage: func() {
|
|
me.L1 = [nil, nil, "ack"];
|
|
me.L2 = [nil, nil, "ack"];
|
|
me.L3 = [nil, nil, "ack"];
|
|
me.L4 = [nil, nil, "ack"];
|
|
me.L5 = [nil, nil, "ack"];
|
|
me.L6 = [nil, nil, "ack"];
|
|
me.C1 = [nil, nil, "ack"];
|
|
me.C2 = [nil, nil, "ack"];
|
|
me.C3 = [nil, nil, "ack"];
|
|
me.C4 = [nil, nil, "ack"];
|
|
me.C5 = [nil, nil, "ack"];
|
|
me.C6 = [nil, nil, "ack"];
|
|
me.R1 = [nil, nil, "ack"];
|
|
me.R2 = [nil, nil, "ack"];
|
|
me.R3 = [nil, nil, "ack"];
|
|
me.R4 = [nil, nil, "ack"];
|
|
me.R5 = [nil, nil, "ack"];
|
|
me.R6 = [nil, nil, "ack"];
|
|
me.arrowsMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
|
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "ack"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
|
},
|
|
updatePage: func() {
|
|
me._clearPage();
|
|
me._setupPageWithData();
|
|
},
|
|
updateActiveRunway: func() {
|
|
if (me.selectedRunway != nil) {
|
|
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
|
if (fmgc.flightPlanController.flightplans[me.computer].departure_runway != nil) {
|
|
me.L1 = [fmgc.flightPlanController.flightplans[me.computer].departure_runway.id, " RWY", "yel"];
|
|
} elsif (fmgc.flightPlanController.flightplans[2].departure_runway != nil and fmgc.flightPlanController.flightplans[2].departure_runway.id == me.selectedRunway.id) {
|
|
me.L1 = [fmgc.flightPlanController.flightplans[2].departure_runway.id, " RWY", "yel"];
|
|
} else {
|
|
me.L1 = ["---", " RWY", "wht"];
|
|
}
|
|
} else {
|
|
if (fmgc.flightPlanController.flightplans[2].departure_runway != nil) {
|
|
me.L1 = [fmgc.flightPlanController.flightplans[2].departure_runway.id, " RWY", "grn"];
|
|
} else {
|
|
me.L1 = ["---", " RWY", "wht"];
|
|
}
|
|
}
|
|
} else {
|
|
me.L1 = ["---", " RWY", "wht"];
|
|
}
|
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
|
},
|
|
updateActiveSIDs: func() {
|
|
if (me.selectedSID == "NO SID") {
|
|
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
|
me.C1 = ["NONE", "SID", "grn"];
|
|
} else {
|
|
me.C1 = ["NONE", "SID", "yel"];
|
|
}
|
|
} elsif (me.selectedSID != nil) {
|
|
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
|
if (fmgc.flightPlanController.flightplans[me.computer].sid != nil) {
|
|
me.C1 = [fmgc.flightPlanController.flightplans[me.computer].sid.id, "SID", "yel"];
|
|
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil and fmgc.flightPlanController.flightplans[2].sid.id == me.selectedSID.id) {
|
|
me.C1 = [fmgc.flightPlanController.flightplans[2].sid.id, "SID", "yel"];
|
|
} else {
|
|
me.C1 = ["------- ", "SID", "wht"];
|
|
}
|
|
} else {
|
|
if (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
|
me.C1 = [fmgc.flightPlanController.flightplans[2].sid.id, "SID", "grn"];
|
|
} else {
|
|
me.C1 = ["------- ", "SID", "wht"];
|
|
}
|
|
}
|
|
} else {
|
|
me.C1 = ["------- ", "SID", "wht"];
|
|
}
|
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
|
},
|
|
updateActiveTransitions: func() {
|
|
if (me.selectedTransition == "NO TRANS") {
|
|
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
|
me.R1 = ["NONE", "TRANS ", "grn"];
|
|
} else {
|
|
me.R1 = ["NONE", "TRANS ", "yel"];
|
|
}
|
|
} else {
|
|
if (me.selectedTransition != nil) {
|
|
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
|
if (fmgc.flightPlanController.flightplans[me.computer].sid_trans != nil) {
|
|
me.R1 = [fmgc.flightPlanController.flightplans[me.computer].sid_trans.id, "TRANS", "yel"];
|
|
} elsif (fmgc.flightPlanController.flightplans[2].sid_trans != nil and fmgc.flightPlanController.flightplans[2].sid_trans.id == me.selectedTransition.id) {
|
|
me.R1 = [fmgc.flightPlanController.flightplans[2].sid_trans.id, "TRANS", "yel"];
|
|
} else {
|
|
me.R1 = ["-------", "TRANS ", "wht"];
|
|
}
|
|
} else {
|
|
if (fmgc.flightPlanController.flightplans[2].sid_trans != nil) {
|
|
me.R1 = [fmgc.flightPlanController.flightplans[2].sid_trans.id, "SID", "grn"];
|
|
} else {
|
|
me.R1 = ["-------", "TRANS ", "wht"];
|
|
}
|
|
}
|
|
} else {
|
|
me.R1 = ["-------", "TRANS ", "wht"];
|
|
}
|
|
}
|
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
|
},
|
|
updateRunways: func() {
|
|
if (me.depAirport == nil) {
|
|
me.depAirport = findAirportsByICAO(left(me.id, 4));
|
|
}
|
|
|
|
me.runways = [];
|
|
me._runways = nil;
|
|
|
|
me._runways = keys(me.depAirport[0].runways);
|
|
me.runways = sort(me._runways,func(a,b) cmp(a,b));
|
|
|
|
if (size(me.runways) >= 1) {
|
|
me.L2 = [" " ~ me.runways[0 + me.scrollRwy], nil, "blu"];
|
|
me.C2 = [math.round(me.depAirport[0].runways[me.runways[0 + me.scrollRwy]].length) ~ "M", "AVAILABLE RUNWAYS", "blu"];
|
|
me.R2 = ["CRS" ~ math.round(me.depAirport[0].runways[me.runways[0 + me.scrollRwy]].heading), nil, "blu"];
|
|
if (me.runways[0 + me.scrollRwy] != me.selectedRunway) {
|
|
me.arrowsMatrix[0][1] = 1;
|
|
me.arrowsColour[0][1] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[0][1] = 0;
|
|
me.arrowsColour[0][1] = "ack";
|
|
}
|
|
}
|
|
if (size(me.runways) >= 2) {
|
|
me.L3 = [" " ~ me.runways[1 + me.scrollRwy], nil, "blu"];
|
|
me.C3 = [math.round(me.depAirport[0].runways[me.runways[1 + me.scrollRwy]].length) ~ "M", nil, "blu"];
|
|
me.R3 = ["CRS" ~ math.round(me.depAirport[0].runways[me.runways[1 + me.scrollRwy]].heading), nil, "blu"];
|
|
if (me.runways[1 + me.scrollRwy] != me.selectedRunway) {
|
|
me.arrowsMatrix[0][2] = 1;
|
|
me.arrowsColour[0][2] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[0][2] = 0;
|
|
me.arrowsColour[0][2] = "ack";
|
|
}
|
|
}
|
|
if (size(me.runways) >= 3) {
|
|
me.L4 = [" " ~ me.runways[2 + me.scrollRwy], nil, "blu"];
|
|
me.C4 = [math.round(me.depAirport[0].runways[me.runways[2 + me.scrollRwy]].length) ~ "M", nil, "blu"];
|
|
me.R4 = ["CRS" ~ math.round(me.depAirport[0].runways[me.runways[2 + me.scrollRwy]].heading), nil, "blu"];
|
|
if (me.runways[2 + me.scrollRwy] != me.selectedRunway) {
|
|
me.arrowsMatrix[0][3] = 1;
|
|
me.arrowsColour[0][3] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[0][3] = 0;
|
|
me.arrowsColour[0][3] = "ack";
|
|
}
|
|
}
|
|
if (size(me.runways) >= 4) {
|
|
me.L5 = [" " ~ me.runways[3 + me.scrollRwy], nil, "blu"];
|
|
me.C5 = [math.round(me.depAirport[0].runways[me.runways[3 + me.scrollRwy]].length) ~ "M", nil, "blu"];
|
|
me.R5 = ["CRS" ~ math.round(me.depAirport[0].runways[me.runways[3 + me.scrollRwy]].heading), nil, "blu"];
|
|
if (me.runways[3 + me.scrollRwy] != me.selectedRunway) {
|
|
me.arrowsMatrix[0][4] = 1;
|
|
me.arrowsColour[0][4] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[0][4] = 0;
|
|
me.arrowsColour[0][4] = "ack";
|
|
}
|
|
}
|
|
|
|
if (size(me.runways) > 4) {
|
|
me.enableScrollRwy = 1;
|
|
}
|
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
|
},
|
|
updateSIDs: func() {
|
|
if (me.depAirport == nil) {
|
|
me.depAirport = findAirportsByICAO(left(me.id, 4));
|
|
}
|
|
|
|
me.sids = [];
|
|
me._sids = nil;
|
|
|
|
if (me.selectedRunway != nil) {
|
|
me._sids = me.depAirport[0].sids(me.selectedRunway.id);
|
|
} else {
|
|
me._sids = me.depAirport[0].sids();
|
|
}
|
|
|
|
me.sids = sort(me._sids,func(a,b) cmp(a,b));
|
|
|
|
if (me.sids == nil) {
|
|
me.sids = ["NO SID"];
|
|
} else {
|
|
append(me.sids, "NO SID");
|
|
}
|
|
|
|
if (size(me.sids) >= 1) {
|
|
me.L2 = [" " ~ me.sids[0 + me.scrollSids], "SIDS", "blu"];
|
|
if (me.sids[0 + me.scrollSids] != me.selectedSID) {
|
|
me.arrowsMatrix[0][1] = 1;
|
|
me.arrowsColour[0][1] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[0][1] = 0;
|
|
me.arrowsColour[0][1] = "ack";
|
|
}
|
|
}
|
|
if (size(me.sids) >= 2) {
|
|
me.L3 = [" " ~ me.sids[1 + me.scrollSids], nil, "blu"];
|
|
if (me.sids[1 + me.scrollSids] != me.selectedSID) {
|
|
me.arrowsMatrix[0][2] = 1;
|
|
me.arrowsColour[0][2] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[0][2] = 0;
|
|
me.arrowsColour[0][2] = "ack";
|
|
}
|
|
}
|
|
if (size(me.sids) >= 3) {
|
|
me.L4 = [" " ~ me.sids[2 + me.scrollSids], nil, "blu"];
|
|
if (me.sids[2 + me.scrollSids] != me.selectedSID) {
|
|
me.arrowsMatrix[0][3] = 1;
|
|
me.arrowsColour[0][3] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[0][3] = 0;
|
|
me.arrowsColour[0][3] = "ack";
|
|
}
|
|
}
|
|
if (size(me.sids) >= 4) {
|
|
me.L5 = [" " ~ me.sids[3 + me.scrollSids], nil, "blu"];
|
|
if (me.sids[3 + me.scrollSids] != me.selectedSID) {
|
|
me.arrowsMatrix[0][4] = 1;
|
|
me.arrowsColour[0][4] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[0][4] = 0;
|
|
me.arrowsColour[0][4] = "ack";
|
|
}
|
|
}
|
|
|
|
me.C2[1] = "AVAILABLE";
|
|
me.R2[1] = "TRANS ";
|
|
|
|
if (size(me.sids) > 4) {
|
|
me.enableScrollSids = 1;
|
|
}
|
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
|
},
|
|
clearTransitions: func() {
|
|
me.R2 = [nil, "TRANS", "wht"];
|
|
me.R3 = [nil, "TRANS", "wht"];
|
|
me.R4 = [nil, "TRANS", "wht"];
|
|
me.R5 = [nil, "TRANS", "wht"];
|
|
me.arrowsMatrix[1][1] = 0;
|
|
me.arrowsColour[1][1] = "ack";
|
|
me.arrowsMatrix[1][2] = 0;
|
|
me.arrowsColour[1][2] = "ack";
|
|
me.arrowsMatrix[1][3] = 0;
|
|
me.arrowsColour[1][3] = "ack";
|
|
me.arrowsMatrix[1][4] = 0;
|
|
me.arrowsColour[1][4] = "ack";
|
|
},
|
|
updateTransitions: func() {
|
|
if (me.depAirport == nil) {
|
|
me.depAirport = findAirportsByICAO(left(me.id, 4));
|
|
}
|
|
|
|
me.clearTransitions();
|
|
if (me.selectedSID == nil or me.selectedSID == "NO SID") {
|
|
append(me.transitions, "NO TRANS");
|
|
return;
|
|
}
|
|
|
|
if (isghost(me.selectedSID)) {
|
|
me._transitions = me.depAirport[0].getSid(me.selectedSID.id).transitions;
|
|
} else {
|
|
me._transitions = me.depAirport[0].getSid(me.selectedSID).transitions;
|
|
}
|
|
me.transitions = sort(me._transitions,func(a,b) cmp(a,b));
|
|
append(me.transitions, "NO TRANS");
|
|
|
|
if (size(me.transitions) >= 1) {
|
|
me.R2 = [me.transitions[0 + me.scrollTrans] ~ " ", "TRANS", "blu"];
|
|
if (me.transitions[0 + me.scrollTrans] != me.selectedTransition) {
|
|
me.arrowsMatrix[1][1] = 1;
|
|
me.arrowsColour[1][1] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[1][1] = 0;
|
|
me.arrowsColour[1][1] = "ack";
|
|
}
|
|
}
|
|
if (size(me.transitions) >= 2) {
|
|
me.R3 = [me.transitions[1 + me.scrollTrans] ~ " ", nil, "blu"];
|
|
if (me.transitions[1 + me.scrollTrans] != me.selectedTransition) {
|
|
me.arrowsMatrix[1][2] = 1;
|
|
me.arrowsColour[1][2] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[1][2] = 0;
|
|
me.arrowsColour[1][2] = "ack";
|
|
}
|
|
}
|
|
if (size(me.transitions) >= 3) {
|
|
me.R4 = [me.transitions[2 + me.scrollTrans] ~ " ", nil, "blu"];
|
|
if (me.transitions[2 + me.scrollTrans] != me.selectedTransition) {
|
|
me.arrowsMatrix[1][3] = 1;
|
|
me.arrowsColour[1][3] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[1][3] = 0;
|
|
me.arrowsColour[1][3] = "ack";
|
|
}
|
|
}
|
|
if (size(me.transitions) >= 4) {
|
|
me.R5 = [me.transitions[3 + me.scrollTrans] ~ " ", nil, "blu"];
|
|
if (me.transitions[3 + me.scrollTrans] != me.selectedTransition) {
|
|
me.arrowsMatrix[1][4] = 1;
|
|
me.arrowsColour[1][4] = "blu";
|
|
} else {
|
|
me.arrowsMatrix[1][4] = 0;
|
|
me.arrowsColour[1][4] = "ack";
|
|
}
|
|
}
|
|
|
|
if (size(me.transitions) > 4) {
|
|
me.enableScrollTrans = 1;
|
|
}
|
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
|
},
|
|
makeTmpy: func() {
|
|
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
|
if (!dirToFlag) {
|
|
fmgc.flightPlanController.createTemporaryFlightPlan(me.computer);
|
|
me.L6 = [" F-PLN", " TMPY", "yel"];
|
|
me.arrowsColour[0][5] = "yel";
|
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
|
} else {
|
|
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
|
}
|
|
}
|
|
},
|
|
scrollUp: func() {
|
|
if (me.activePage == 0) {
|
|
if (me.enableScrollRwy) {
|
|
me.scrollRwy += 1;
|
|
if (me.scrollRwy > size(me.runways) - 4) {
|
|
me.scrollRwy = 0;
|
|
}
|
|
me.updateRunways();
|
|
}
|
|
} else {
|
|
if (me.selectedSID == nil) {
|
|
if (me.enableScrollSids) {
|
|
me.scrollSids += 1;
|
|
if (me.scrollSids > size(me.sids) - 4) {
|
|
me.scrollSids = 0;
|
|
}
|
|
me.updateSIDs();
|
|
if (me.selectedSID == nil or me.selectedSID == "NO SID") {
|
|
me.clearTransitions();
|
|
} else {
|
|
me.updateTransitions();
|
|
}
|
|
}
|
|
} else {
|
|
if (me.enableScrollTrans) {
|
|
me.scrollTrans += 1;
|
|
if (me.scrollTrans > size(me.transitions) - 4) {
|
|
me.scrollTrans = 0;
|
|
}
|
|
me.updateTransitions();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
scrollDn: func() {
|
|
if (me.activePage == 0) {
|
|
if (me.enableScrollRwy) {
|
|
me.scrollRwy -= 1;
|
|
if (me.scrollRwy < 0) {
|
|
me.scrollRwy = size(me.runways) - 4;
|
|
}
|
|
me.updateRunways();
|
|
}
|
|
} else {
|
|
if (me.selectedSID == nil) {
|
|
if (me.enableScrollSids) {
|
|
me.scrollSids -= 1;
|
|
if (me.scrollSids < 0) {
|
|
me.scrollSids = size(me.sids) - 4;
|
|
}
|
|
me.updateSIDs();
|
|
if (me.selectedSID == nil or me.selectedSID == "NO SID") {
|
|
me.clearTransitions();
|
|
} else {
|
|
me.updateTransitions();
|
|
}
|
|
}
|
|
} else {
|
|
if (me.enableScrollTrans) {
|
|
me.scrollTrans -= 1;
|
|
if (me.scrollTrans < 0) {
|
|
me.scrollTrans = size(me.transitions) - 4;
|
|
}
|
|
me.updateTransitions();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
scrollLeft: func() {
|
|
if (me.activePage == 0 and me.selectedRunway == nil) {
|
|
mcdu_message(me.computer, "NOT ALLOWED");
|
|
return;
|
|
}
|
|
me.activePage = !me.activePage;
|
|
me.updatePage();
|
|
},
|
|
scrollRight: func() {
|
|
if (me.activePage == 0 and me.selectedRunway == nil) {
|
|
mcdu_message(me.computer, "NOT ALLOWED");
|
|
return;
|
|
}
|
|
me.activePage = !me.activePage;
|
|
me.updatePage();
|
|
},
|
|
depPushbuttonLeft: func(index) {
|
|
if (me.activePage == 0) {
|
|
if (size(me.runways) >= (index - 1)) {
|
|
if (!dirToFlag) {
|
|
me.selectedSID = nil;
|
|
fmgc.flightPlanController.flightplans[me.computer].sid = nil;
|
|
me.scrollSids = 0;
|
|
me.selectedTransition = nil;
|
|
fmgc.flightPlanController.flightplans[me.computer].sid_trans = nil;
|
|
me.scrollTrans = 0;
|
|
isNoSid[me.computer] = 0;
|
|
isNoTransDep[me.computer] = 0;
|
|
me.selectedRunway = me.depAirport[0].runway(me.runways[index - 2 + me.scrollRwy]);
|
|
me.makeTmpy();
|
|
fmgc.flightPlanController.flightplans[me.computer].departure_runway = me.selectedRunway;
|
|
mcdu.perfToCheckTakeoffData(me.computer);
|
|
if (fmgc.FMGCInternal.v1set) {
|
|
fmgc.FMGCInternal.v1set = 0;
|
|
fmgc.FMGCInternal.v1 = 0;
|
|
}
|
|
if (fmgc.FMGCInternal.vrset) {
|
|
fmgc.FMGCInternal.vrset = 0;
|
|
fmgc.FMGCInternal.vr = 0;
|
|
}
|
|
if (fmgc.FMGCInternal.v2set) {
|
|
fmgc.FMGCInternal.v2set = 0;
|
|
fmgc.FMGCInternal.v2 = 0;
|
|
}
|
|
me.updateRunways();
|
|
me.updatePage();
|
|
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
|
me.scrollRight();
|
|
} else {
|
|
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
|
}
|
|
} else {
|
|
mcdu_message(me.computer, "NOT ALLOWED");
|
|
}
|
|
} else {
|
|
if (size(me.sids) >= (index - 1)) {
|
|
if (!dirToFlag) {
|
|
me.selectedSID = me.sids[index - 2 + me.scrollSids];
|
|
me.makeTmpy();
|
|
if (me.selectedSID != "NO SID") {
|
|
isNoSid[me.computer] = 0;
|
|
fmgc.flightPlanController.flightplans[me.computer].sid = me.depAirport[0].getSid(me.selectedSID);
|
|
} else {
|
|
isNoSid[me.computer] = 1;
|
|
fmgc.flightPlanController.flightplans[me.computer].sid = nil;
|
|
fmgc.flightPlanController.insertNOSID(me.computer);
|
|
}
|
|
me.updateSIDs();
|
|
me.scrollTrans = 0;
|
|
if (me.selectedSID != "NO SID") {
|
|
isNoTransDep[me.computer] = 0;
|
|
me.selectedTransition = nil;
|
|
fmgc.flightPlanController.flightplans[me.computer].sid_trans = nil;
|
|
} else {
|
|
isNoTransDep[me.computer] = 1;
|
|
me.selectedTransition = "NO TRANS";
|
|
}
|
|
me.updatePage();
|
|
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
|
} else {
|
|
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
|
}
|
|
} else {
|
|
mcdu_message(me.computer, "NOT ALLOWED");
|
|
}
|
|
}
|
|
},
|
|
depPushbuttonRight: func(index) {
|
|
if (size(me.transitions) >= (index - 1)) {
|
|
if (!dirToFlag) {
|
|
me.selectedTransition = me.transitions[index - 2 + me.scrollTrans];
|
|
me.makeTmpy();
|
|
if (me.selectedTransition != "NO TRANS") {
|
|
isNoTransDep[me.computer] = 0;
|
|
fmgc.flightPlanController.flightplans[me.computer].sid_trans = me.selectedTransition;
|
|
} else {
|
|
isNoTransDep[me.computer] = 1;
|
|
fmgc.flightPlanController.flightplans[me.computer].sid_trans = nil;
|
|
}
|
|
me.updatePage();
|
|
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
|
} else {
|
|
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
|
}
|
|
} else {
|
|
mcdu_message(me.computer, "NOT ALLOWED");
|
|
}
|
|
},
|
|
}; |