1
0
Fork 0

Implement enroute navaids wind, save wind values across flightplan changes

This commit is contained in:
Matthew Maring 2020-06-10 19:22:08 -04:00
parent 49257dc018
commit 6b523801b8
4 changed files with 130 additions and 46 deletions

View file

@ -159,7 +159,7 @@ var windController = {
},
destroyTemporaryWinds: func(n, a) { # a = 1 activate, a = 0 erase
print("destroying temporary ", n);
#print("destroying temporary ", n);
if (a == 1) {
me.resetWind(2);
me.clb_winds[2] = me.copyClbWind(n);
@ -203,14 +203,14 @@ var windController = {
me.winds[plan][index] = waypoint_winds.new(id, "waypoint", 0);
}
} else {
print("insert invalid id: ", id, ", plan: ", plan, ", index: ", index, ", size: ", me.windSizes[plan]);
debug.dump(me.winds);
debug.dump(me.windSizes);
#print("insert invalid id: ", id, ", plan: ", plan, ", index: ", index, ", size: ", me.windSizes[plan]);
#debug.dump(me.winds);
#debug.dump(me.windSizes);
return;
}
print("insert plan: ", plan, ", index: ", index);
debug.dump(me.winds);
debug.dump(me.windSizes);
#print("insert plan: ", plan, ", index: ", index);
#debug.dump(me.winds);
#debug.dump(me.windSizes);
},
deleteWind: func(plan, index) {
@ -224,14 +224,14 @@ var windController = {
pop(me.winds[plan]);
me.windSizes[plan] -= 1;
} else {
print("delete invalid plan: ", plan, ", index: ", index, ", size: ", me.windSizes[plan]);
debug.dump(me.winds);
debug.dump(me.windSizes);
#print("delete invalid plan: ", plan, ", index: ", index, ", size: ", me.windSizes[plan]);
#debug.dump(me.winds);
#debug.dump(me.windSizes);
return;
}
print("delete plan: ", plan, ", index: ", index);
debug.dump(me.winds);
debug.dump(me.windSizes);
#print("delete plan: ", plan, ", index: ", index);
#debug.dump(me.winds);
#debug.dump(me.windSizes);
},
updatePlans: func() {
@ -245,7 +245,7 @@ var windController = {
for (plan = 0; plan <= 2; plan += 1) {
for (i = 0; i < fmgc.flightPlanController.flightplans[plan].getPlanSize(); i += 1) {
var waypoint = fmgc.flightPlanController.flightplans[plan].getWP(i);
print(waypoint.wp_role, "| : |", waypoint.wp_type);
#print(waypoint.wp_role, "| : |", waypoint.wp_type);
if (waypoint.wp_role == "sid") {
append(me.winds[plan], waypoint_winds.new(waypoint.id, "departure", 0));
me.windSizes[plan] += 1;
@ -255,7 +255,7 @@ var windController = {
} else if (waypoint.wp_role == nil and waypoint.wp_type == "navaid") {
var found = 0;
for (index = 0; index < windSizes_copy[plan]; index += 1) {
print(waypoint.id, " : ", winds_copy[plan][index].id);
#print(waypoint.id, " : ", winds_copy[plan][index].id);
if (waypoint.id == winds_copy[plan][index].id) {
append(me.winds[plan], winds_copy[plan][index]);
append(me.nav_indicies[plan], i);
@ -271,13 +271,15 @@ var windController = {
append(me.winds[plan], waypoint_winds.new(waypoint.id, "waypoint", 0));
me.windSizes[plan] += 1;
}
print("insert plan: ", plan, ", index: ", i);
debug.dump(me.winds);
debug.dump(me.nav_indicies);
debug.dump(me.windSizes);
#print("insert plan: ", plan, ", index: ", i);
#debug.dump(me.winds);
#debug.dump(me.nav_indicies);
#debug.dump(me.windSizes);
}
}
debug.dump(me.nav_indicies);
if (canvas_mcdu.myCLBWIND[1] != nil) {
canvas_mcdu.myCLBWIND[1]._setupPageWithData();
}

View file

@ -588,12 +588,12 @@ var rskbutton = func(btn, i) {
setprop("MCDU[" ~ i ~ "]/page", "WINDCLB");
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "WINDDES") {
if (fmgc.flightPlanController.temporaryFlag[i]) {
if (getprop("/FMGC/internal/tofrom-set") and size(fmgc.flightPlanController.getWaypointList(i)) > 0) {
if (getprop("/FMGC/internal/tofrom-set") and size(fmgc.windController.nav_indicies[i]) > 0) {
if (canvas_mcdu.myCRZWIND[i] != nil) {
canvas_mcdu.myCRZWIND[i].del();
}
canvas_mcdu.myCRZWIND[i] = nil;
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, fmgc.flightPlanController.getWaypointList(i)[0], 0);
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, fmgc.flightPlanController.flightplans[i].getWP(fmgc.windController.nav_indicies[i][0]), 0);
} else {
if (canvas_mcdu.myCRZWIND[i] == nil) {
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, nil, nil);
@ -602,12 +602,12 @@ var rskbutton = func(btn, i) {
}
}
} else {
if (getprop("/FMGC/internal/tofrom-set") and size(fmgc.flightPlanController.getWaypointList(2)) > 0) {
if (getprop("/FMGC/internal/tofrom-set") and size(fmgc.windController.nav_indicies[2]) > 0) {
if (canvas_mcdu.myCRZWIND[i] != nil) {
canvas_mcdu.myCRZWIND[i].del();
}
canvas_mcdu.myCRZWIND[i] = nil;
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, fmgc.flightPlanController.getWaypointList(2)[0], 0);
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, fmgc.flightPlanController.flightplans[2].getWP(fmgc.windController.nav_indicies[2][0]), 0);
} else {
if (canvas_mcdu.myCRZWIND[i] == nil) {
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, nil, nil);
@ -641,12 +641,12 @@ var rskbutton = func(btn, i) {
initInputB("R5",i);
} else if (getprop("/MCDU[" ~ i ~ "]/page") == "WINDCLB") {
if (fmgc.flightPlanController.temporaryFlag[i]) {
if (getprop("/FMGC/internal/tofrom-set") and size(fmgc.flightPlanController.getWaypointList(i)) > 0) {
if (getprop("/FMGC/internal/tofrom-set") and size(fmgc.windController.nav_indicies[i]) > 0) {
if (canvas_mcdu.myCRZWIND[i] != nil) {
canvas_mcdu.myCRZWIND[i].del();
}
canvas_mcdu.myCRZWIND[i] = nil;
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, fmgc.flightPlanController.getWaypointList(i)[0], 0);
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, fmgc.flightPlanController.flightplans[i].getWP(fmgc.windController.nav_indicies[i][0]), 0);
} else {
if (canvas_mcdu.myCRZWIND[i] == nil) {
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, nil, nil);
@ -655,12 +655,12 @@ var rskbutton = func(btn, i) {
}
}
} else {
if (getprop("/FMGC/internal/tofrom-set") and size(fmgc.flightPlanController.getWaypointList(2)) > 0) {
if (getprop("/FMGC/internal/tofrom-set") and size(fmgc.windController.nav_indicies[2]) > 0) {
if (canvas_mcdu.myCRZWIND[i] != nil) {
canvas_mcdu.myCRZWIND[i].del();
}
canvas_mcdu.myCRZWIND[i] = nil;
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, fmgc.flightPlanController.getWaypointList(2)[0], 0);
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, fmgc.flightPlanController.flightplans[2].getWP(fmgc.windController.nav_indicies[2][0]), 0);
} else {
if (canvas_mcdu.myCRZWIND[i] == nil) {
canvas_mcdu.myCRZWIND[i] = windCRZPage.new(i, nil, nil);

View file

@ -52,9 +52,9 @@ var windCLBPage = {
computer_temp = me.computer;
}
debug.dump(fmgc.windController.clb_winds[0]);
debug.dump(fmgc.windController.clb_winds[1]);
debug.dump(fmgc.windController.clb_winds[2]);
#debug.dump(fmgc.windController.clb_winds[0]);
#debug.dump(fmgc.windController.clb_winds[1]);
#debug.dump(fmgc.windController.clb_winds[2]);
if (fmgc.windController.clb_winds[computer_temp] == 0 or fmgc.windController.clb_winds[computer_temp].wind1.altitude == "") {
me.items = 1;

View file

@ -30,6 +30,7 @@ var windCRZPage = {
index: nil,
computer: nil,
cur_location: 0,
match_location: 0,
items: 0,
singleCRZ: 0,
new: func(computer, waypoint, cur_location) {
@ -39,8 +40,6 @@ var windCRZPage = {
wcp.cur_location = cur_location;
if (waypoint == nil) {
wcp.singleCRZ = 1;
} else {
#wcp.match_location = first item in match list;
}
wcp._setupPageWithData();
return wcp;
@ -64,9 +63,9 @@ var windCRZPage = {
computer_temp = me.computer;
}
debug.dump(fmgc.windController.crz_winds[0]);
debug.dump(fmgc.windController.crz_winds[1]);
debug.dump(fmgc.windController.crz_winds[2]);
#debug.dump(fmgc.windController.crz_winds[0]);
#debug.dump(fmgc.windController.crz_winds[1]);
#debug.dump(fmgc.windController.crz_winds[2]);
if (me.singleCRZ == 1) {
if (fmgc.windController.crz_winds[computer_temp] == 0 or fmgc.windController.crz_winds[computer_temp].wind1.altitude == "") {
@ -79,7 +78,16 @@ var windCRZPage = {
me.items = 4;
}
} else {
me.match_location = fmgc.windController.nav_indicies[computer_temp][me.cur_location];
if (size(fmgc.windController.winds[computer_temp]) == 0 or fmgc.windController.winds[computer_temp][me.match_location].wind1.altitude == "") {
me.items = 1;
} else if (fmgc.windController.winds[computer_temp][me.match_location].wind2.altitude == "") {
me.items = 2;
} else if (fmgc.windController.crz_winds[computer_temp][me.match_location].wind3.altitude == "") {
me.items = 3;
} else {
me.items = 4;
}
}
# load data
@ -134,7 +142,55 @@ var windCRZPage = {
}
}
} else {
if (me.items >= 4) {
wind = fmgc.windController.winds[computer_temp][me.match_location].wind4;
if (wind.altitude != "") {
me.L4 = [wind.heading ~ "/" ~ wind.magnitude ~ "/" ~ wind.altitude, nil, "blu"];
me.fontMatrix[0][3] = 0;
} else {
me.L4 = ["[ ]/[ ]/[ ]", nil, "blu"];
me.fontMatrix[0][3] = 1;
}
} else {
me.L4 = [nil, nil, "ack"];
}
if (me.items >= 3) {
wind = fmgc.windController.winds[computer_temp][me.match_location].wind3;
if (wind.altitude != "") {
me.L3 = [wind.heading ~ "/" ~ wind.magnitude ~ "/" ~ wind.altitude, nil, "blu"];
me.fontMatrix[0][2] = 0;
} else {
me.L3 = ["[ ]/[ ]/[ ]", nil, "blu"];
me.fontMatrix[0][2] = 1;
}
} else {
me.L3 = [nil, nil, "ack"];
}
if (me.items >= 2) {
wind = fmgc.windController.winds[computer_temp][me.match_location].wind2;
if (wind.altitude != "") {
me.L2 = [wind.heading ~ "/" ~ wind.magnitude ~ "/" ~ wind.altitude, nil, "blu"];
me.fontMatrix[0][1] = 0;
} else {
me.L2 = ["[ ]/[ ]/[ ]", nil, "blu"];
me.fontMatrix[0][1] = 1;
}
} else {
me.L2 = [nil, nil, "ack"];
}
if (me.items >= 1) {
wind = fmgc.windController.winds[computer_temp][me.match_location].wind1;
if (wind.altitude != "") {
me.L1 = [wind.heading ~ "/" ~ wind.magnitude ~ "/" ~ wind.altitude, "TRU WIND/ALT", "blu"];
me.fontMatrix[0][0] = 0;
} else {
me.L1 = ["[ ]/[ ]/[ ]", "TRU WIND/ALT", "blu"];
me.fontMatrix[0][0] = 1;
}
}
}
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
@ -216,7 +272,27 @@ var windCRZPage = {
fmgc.windController.crz_winds[computer_temp].wind1.altitude = winds[2];
}
} else {
if (index == 5) {
fmgc.windController.winds[computer_temp][me.match_location].wind5.heading = winds[0];
fmgc.windController.winds[computer_temp][me.match_location].wind5.magnitude = winds[1];
fmgc.windController.winds[computer_temp][me.match_location].wind5.altitude = winds[2];
} else if (index == 4) {
fmgc.windController.winds[computer_temp][me.match_location].wind4.heading = winds[0];
fmgc.windController.winds[computer_temp][me.match_location].wind4.magnitude = winds[1];
fmgc.windController.winds[computer_temp][me.match_location].wind4.altitude = winds[2];
} else if (index == 3) {
fmgc.windController.winds[computer_temp][me.match_location].wind3.heading = winds[0];
fmgc.windController.winds[computer_temp][me.match_location].wind3.magnitude = winds[1];
fmgc.windController.winds[computer_temp][me.match_location].wind3.altitude = winds[2];
} else if (index == 2) {
fmgc.windController.winds[computer_temp][me.match_location].wind2.heading = winds[0];
fmgc.windController.winds[computer_temp][me.match_location].wind2.magnitude = winds[1];
fmgc.windController.winds[computer_temp][me.match_location].wind2.altitude = winds[2];
} else if (index == 1) {
fmgc.windController.winds[computer_temp][me.match_location].wind1.heading = winds[0];
fmgc.windController.winds[computer_temp][me.match_location].wind1.magnitude = winds[1];
fmgc.windController.winds[computer_temp][me.match_location].wind1.altitude = winds[2];
}
}
mcdu_scratchpad.scratchpads[me.computer].empty();
if (me.items == index and index != 5) {
@ -235,25 +311,31 @@ var windCRZPage = {
}
},
pushButtonUp: func() {
if (me.cur_location < size(fmgc.flightPlanController.getWaypointList(2)) - 1) {
var computer_temp = 2;
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
computer_temp = me.computer;
}
if (me.cur_location < size(fmgc.windController.nav_indicies[computer_temp]) - 1) {
me.cur_location = me.cur_location + 1;
} else {
me.cur_location = 0;
}
me.waypoint = fmgc.flightPlanController.getWaypointList(2)[me.cur_location];
me.match_location = fmgc.flightPlanController.getWaypointMapping(2)[me.cur_location];
#load stored data here
me.match_location = fmgc.windController.nav_indicies[computer_temp][me.cur_location];
me.waypoint = fmgc.flightPlanController.flightplans[computer_temp].getWP(me.match_location);
me.reload();
},
pushButtonDown: func() {
var computer_temp = 2;
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
computer_temp = me.computer;
}
if (me.cur_location > 0) {
me.cur_location = me.cur_location - 1;
} else {
me.cur_location = size(fmgc.flightPlanController.getWaypointList(2)) - 1;
me.cur_location = size(fmgc.windController.nav_indicies[computer_temp]) - 1;
}
me.waypoint = fmgc.flightPlanController.getWaypointList(2)[me.cur_location];
me.match_location = fmgc.flightPlanController.getWaypointMapping(2)[me.cur_location];
#load stored data here
me.match_location = fmgc.windController.nav_indicies[computer_temp][me.cur_location];
me.waypoint = fmgc.flightPlanController.flightplans[computer_temp].getWP(me.match_location);
me.reload();
}
};