diff --git a/A320-main.xml b/A320-main.xml index 640ffafd..7751b92a 100644 --- a/A320-main.xml +++ b/A320-main.xml @@ -3954,7 +3954,6 @@ Aircraft/A320-family/Nasal/Libraries/buttons.nas Aircraft/A320-family/Nasal/Libraries/shake.nas Aircraft/A320-family/Nasal/Libraries/zoom-views.nas - Aircraft/A320-family/Nasal/Libraries/efis.nas Aircraft/A320-family/AircraftConfig/acconfig.nas @@ -3998,6 +3997,7 @@ Aircraft/A320-family/Nasal/FMGC/FCU.nas + Aircraft/A320-family/Nasal/Panels/efis.nas Aircraft/A320-family/Nasal/FMGC/flightplan-waypoints.nas diff --git a/Models/Effects/wing-condensation-L.xml b/Models/Effects/wing-condensation-L.xml index b826cdcd..de1a4dd6 100644 --- a/Models/Effects/wing-condensation-L.xml +++ b/Models/Effects/wing-condensation-L.xml @@ -11,61 +11,35 @@ - - - - - - environment/relative-humidity - 0.1 - - systems/navigation/adr/output/aoa-1 - - - 13.5 - - - - - - environment/relative-humidity - 0.1 - - systems/navigation/adr/output/aoa-2 - - - 13.5 - - - - - - environment/relative-humidity - 0.1 - - systems/navigation/adr/output/aoa-3 - - - 13.5 - - + + + + + environment/relative-humidity + 0.075 + + fdm/jsbsim/aero/alpha-deg + + + 13.5 + velocities/groundspeed-kt 100 - - + + velocities/groundspeed-kt 210 - - + + environment/relative-humidity 50 - - + + environment/temperature-degc 28 - - + + position/altitude-agl-ft 0 @@ -73,20 +47,10 @@ position/altitude-agl-ft 8000 - - - systems/navigation/adr/output/aoa-1 - 0 - - - systems/navigation/adr/output/aoa-2 - 0 - - - systems/navigation/adr/output/aoa-3 - 0 - - + + fdm/jsbsim/aero/alpha-deg + 0 + @@ -109,49 +73,49 @@ - - - - 90 - - - + 90 + + + - 90 - - 90 - 90 - - - 0 - 0 - - - 180 - 180 - 180 - -180 - -180 - -180 - - + 110 + systems/navigation/adr/output/aoa-1 + + --> + 90 + + 90 + 90 + + + 0 + 0 + + + 180 + 180 + 180 + -180 + -180 + -180 + + - - + + 4 @@ -159,13 +123,13 @@ 10 - - + + - billboard + billboard - - + + @@ -203,8 +167,8 @@ 1.5 - - + + @@ -239,22 +203,22 @@ - - 2 - - - - 0.00001 - - 0.025 - 0.175 - + + 2 + + + + 0.00001 + + 0.025 + 0.175 + - - air - true - true - + + air + true + true + diff --git a/Models/Effects/wing-condensation-R.xml b/Models/Effects/wing-condensation-R.xml index 62d524a4..4906ba91 100644 --- a/Models/Effects/wing-condensation-R.xml +++ b/Models/Effects/wing-condensation-R.xml @@ -11,61 +11,35 @@ - - - - - - environment/relative-humidity - 0.1 - - systems/navigation/adr/output/aoa-1 - - - 13.5 - - - - - - environment/relative-humidity - 0.1 - - systems/navigation/adr/output/aoa-2 - - - 13.5 - - - - - - environment/relative-humidity - 0.1 - - systems/navigation/adr/output/aoa-3 - - - 13.5 - - + + + + + environment/relative-humidity + 0.075 + + fdm/jsbsim/aero/alpha-deg + + + 13.5 + velocities/groundspeed-kt 100 - - + + velocities/groundspeed-kt 210 - - + + environment/relative-humidity 50 - - + + environment/temperature-degc 28 - - + + position/altitude-agl-ft 0 @@ -73,20 +47,10 @@ position/altitude-agl-ft 8000 - - - systems/navigation/adr/output/aoa-1 - 0 - - - systems/navigation/adr/output/aoa-2 - 0 - - - systems/navigation/adr/output/aoa-3 - 0 - - + + fdm/jsbsim/aero/alpha-deg + 0 + @@ -109,49 +73,49 @@ - - - - 90 - - - + 90 + + + - 90 - - 90 - 90 - - - 0 - 0 - - - 180 - 180 - 180 - -180 - -180 - -180 - - + 110 + systems/navigation/adr/output/aoa-1 + + --> + 90 + + 90 + 90 + + + 0 + 0 + + + 180 + 180 + 180 + -180 + -180 + -180 + + - - + + 4 @@ -159,13 +123,13 @@ 10 - - + + - billboard + billboard - - + + @@ -203,8 +167,8 @@ 1.5 - - + + @@ -239,22 +203,22 @@ - - 2 - - - - 0.00001 - - 0.025 - 0.175 - + + 2 + + + + 0.00001 + + 0.025 + 0.175 + - - air - true - true - + + air + true + true + diff --git a/Models/FlightDeck/a320.flightdeck.xml b/Models/FlightDeck/a320.flightdeck.xml index 3514b9bb..baffe01c 100644 --- a/Models/FlightDeck/a320.flightdeck.xml +++ b/Models/FlightDeck/a320.flightdeck.xml @@ -3262,9 +3262,9 @@ nasal @@ -3304,9 +3304,9 @@ nasal @@ -3346,9 +3346,9 @@ nasal @@ -3388,9 +3388,9 @@ nasal @@ -3430,9 +3430,9 @@ nasal @@ -3472,9 +3472,9 @@ nasal @@ -3514,9 +3514,9 @@ nasal @@ -3556,9 +3556,9 @@ nasal @@ -3598,9 +3598,9 @@ nasal @@ -3640,9 +3640,9 @@ nasal @@ -3675,7 +3675,7 @@ false nasal - + @@ -3684,7 +3684,7 @@ false nasal - + @@ -3713,7 +3713,7 @@ false nasal - + @@ -3722,7 +3722,7 @@ false nasal - + @@ -3751,7 +3751,7 @@ false nasal - + @@ -3760,7 +3760,7 @@ false nasal - + @@ -3790,7 +3790,7 @@ false nasal - + @@ -3799,7 +3799,7 @@ false nasal - + diff --git a/Nasal/FMGC/flightplan.nas b/Nasal/FMGC/flightplan.nas index dacb1446..00bfeb3e 100644 --- a/Nasal/FMGC/flightplan.nas +++ b/Nasal/FMGC/flightplan.nas @@ -56,6 +56,14 @@ var flightPlanController = { _timeTemp: nil, _altTemp: nil, + init: func() { + me.resetFlightplan(2); + me.insertPPOS(2); + me.addDiscontinuity(1, 2, 1); + me.currentToWptIndex.setValue(0); + me.flightPlanChanged(2); + }, + reset: func() { me.temporaryFlag[0] = 0; me.temporaryFlag[1] = 0; @@ -208,8 +216,11 @@ var flightPlanController = { # Check if a discontinuity already exists either immediately before or at that index # If it does, don't add another one # Optional flag DEBUG_DISCONT to disable discontinuities totally - addDiscontinuity: func(index, plan) { + addDiscontinuity: func(index, plan, force = 0) { if (DEBUG_DISCONT) { return; } + if (force) { + me.flightplans[plan].insertWP(createDiscontinuity(), index); + } if (index > 0) { if (me.flightplans[plan].getWP(index).wp_name != "DISCONTINUITY" and me.flightplans[plan].getWP(index - 1).wp_name != "DISCONTINUITY") { me.flightplans[plan].insertWP(createDiscontinuity(), index); @@ -231,6 +242,10 @@ var flightPlanController = { me.flightplans[n].insertWP(createWP(geo.aircraft_position(), "T-P"), index); }, + insertPPOS: func(n, index = 0) { + me.flightplans[n].insertWP(createWP(geo.aircraft_position(), "PPOS"), index); + }, + # childWPBearingDistance - return waypoint at bearing and distance from specified waypoint ghost # args: wpt, bearing, dist, name, typeStr # wpt: waypoint ghost diff --git a/Nasal/Libraries/libraries.nas b/Nasal/Libraries/libraries.nas index ef1740f2..99ecb3fa 100644 --- a/Nasal/Libraries/libraries.nas +++ b/Nasal/Libraries/libraries.nas @@ -222,6 +222,7 @@ var systemsInit = func { atc.init(); fcu.FCUController.init(); dmc.DMController.init(); + fmgc.flightPlanController.init(); } setlistener("/sim/signals/fdm-initialized", func { diff --git a/Nasal/MCDU/ARRIVAL.nas b/Nasal/MCDU/ARRIVAL.nas index 517ed64b..306c8128 100644 --- a/Nasal/MCDU/ARRIVAL.nas +++ b/Nasal/MCDU/ARRIVAL.nas @@ -80,9 +80,11 @@ var arrivalPage = { } if (fmgc.flightPlanController.flightplans[me.computer].star != nil) { me.selectedSTAR = fmgc.flightPlanController.flightplans[me.computer].star; + me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].star_trans; isNoStar[me.computer] = 0; } elsif (fmgc.flightPlanController.flightplans[2].star != nil) { me.selectedSTAR = fmgc.flightPlanController.flightplans[2].star; + me.selectedTransition = fmgc.flightPlanController.flightplans[2].star_trans; isNoStar[me.computer] = 0; } elsif (isNoStar[me.computer] == 1) { me.selectedSTAR = "NO STAR"; diff --git a/Nasal/MCDU/DEPARTURE.nas b/Nasal/MCDU/DEPARTURE.nas index 97fe8802..ba106ff7 100644 --- a/Nasal/MCDU/DEPARTURE.nas +++ b/Nasal/MCDU/DEPARTURE.nas @@ -77,9 +77,11 @@ var departurePage = { } if (fmgc.flightPlanController.flightplans[me.computer].sid != nil) { me.selectedSID = fmgc.flightPlanController.flightplans[me.computer].sid; + me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].sid_trans; isNoSid[me.computer] = 0; } elsif (fmgc.flightPlanController.flightplans[2].sid != nil) { me.selectedSID = fmgc.flightPlanController.flightplans[2].sid; + me.selectedTransition = fmgc.flightPlanController.flightplans[2].sid_trans; isNoSid[me.computer] = 0; } elsif (isNoSid[me.computer] == 1) { me.selectedSID = "NO SID"; @@ -196,7 +198,7 @@ var departurePage = { me.R1 = ["-------", "TRANS ", "wht"]; } } elsif (fmgc.flightPlanController.flightplans[me.computer].sid_trans != nil) { - me.C1 = [fmgc.flightPlanController.flightplans[me.computer].sid_trans.id, "SID", "yel"]; + me.R1 = [fmgc.flightPlanController.flightplans[me.computer].sid_trans.id, "SID", "yel"]; } else { me.R1 = ["-------", "TRANS ", "wht"]; } @@ -558,7 +560,7 @@ var departurePage = { if (!dirToFlag) { me.selectedTransition = me.transitions[index - 2]; me.makeTmpy(); - fmgc.flightPlanController.flightplans[me.computer].sid = me.depAirport[0].getSid(me.selectedSID).transition(me.selectedTransition); + fmgc.flightPlanController.flightplans[me.computer].sid_trans = me.depAirport[0].getSid(me.selectedSID).transition(me.selectedTransition); me.updateActiveTransitions(); me.updateTransitions(); fmgc.flightPlanController.flightPlanChanged(me.computer); diff --git a/Nasal/MCDU/INITA.nas b/Nasal/MCDU/INITA.nas index a50ac6ad..e0f0fde1 100644 --- a/Nasal/MCDU/INITA.nas +++ b/Nasal/MCDU/INITA.nas @@ -168,7 +168,8 @@ var initInputA = func(key, i) { setprop("/FMGC/internal/fuel-calculating", 0); setprop("/FMGC/internal/fuel-calculating", 1); } - fmgc.flightPlanController.reset(); + fmgc.flightPlanController.reset(2); + fmgc.flightPlanController.init(); setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0); mcdu.clearScratchpad(i); #} else if (scratchpad == "") { diff --git a/Nasal/MCDU/MCDU.nas b/Nasal/MCDU/MCDU.nas index 3326413e..77034d1d 100644 --- a/Nasal/MCDU/MCDU.nas +++ b/Nasal/MCDU/MCDU.nas @@ -772,42 +772,33 @@ var pagebutton = func(btn, i) { setprop("/MCDU[" ~ i ~ "]/scratchpad", "SELECT DESIRED SYSTEM"); setprop("/MCDU[" ~ i ~ "]/page", "MCDU"); } else if (btn == "f-pln" or btn == "airport") { - if (fmgc.flightPlanController.active.getBoolValue()) { - if (canvas_mcdu.myFpln[i] == nil) { - canvas_mcdu.myFpln[i] = fplnPage.new(2, i); - } - if (btn == "airport") { - if (getprop("FMGC/status/phase") == 0 or getprop("FMGC/status/phase") == 1) { - canvas_mcdu.myFpln[i].scroll = 0; + if (canvas_mcdu.myFpln[i] == nil) { + canvas_mcdu.myFpln[i] = fplnPage.new(2, i); + } + if (btn == "airport") { + if (getprop("FMGC/status/phase") == 0 or getprop("FMGC/status/phase") == 1) { + canvas_mcdu.myFpln[i].scroll = 0; + } else { + if (fmgc.flightPlanController.temporaryFlag[i]) { + canvas_mcdu.myFpln[i].scroll = fmgc.flightPlanController.arrivalIndex[i]; } else { - if (fmgc.flightPlanController.temporaryFlag[i]) { - canvas_mcdu.myFpln[i].scroll = fmgc.flightPlanController.arrivalIndex[i]; - } else { - canvas_mcdu.myFpln[i].scroll = fmgc.flightPlanController.arrivalIndex[2]; - } + canvas_mcdu.myFpln[i].scroll = fmgc.flightPlanController.arrivalIndex[2]; } } - setprop("/MCDU[" ~ i ~ "]/page", "F-PLNA"); - } else { - setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 1); - setprop("/MCDU[" ~ i ~ "]/scratchpad", "ERROR. INITIALIZE ROUTE"); # Should be ERROR:, but the : character doesn't show in our MCDU font right now... } + setprop("/MCDU[" ~ i ~ "]/page", "F-PLNA"); + } else if (btn == "fuel-pred") { setprop("/MCDU[" ~ i ~ "]/page", "FUELPRED"); } else if (btn == "dirto") { - if (fmgc.flightPlanController.active.getBoolValue()) { - if (fmgc.flightPlanController.temporaryFlag[i] and !dirToFlag) { - setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 1); - setprop("/MCDU[" ~ i ~ "]/scratchpad", "INSRT / ERASE TMPY FIRST"); - return; - } elsif (canvas_mcdu.myDirTo[i] == nil) { - canvas_mcdu.myDirTo[i] = dirTo.new(i); - } - setprop("/MCDU[" ~ i ~ "]/page", "DIRTO"); - } else { + if (fmgc.flightPlanController.temporaryFlag[i] and !dirToFlag) { setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 1); - setprop("/MCDU[" ~ i ~ "]/scratchpad", "ERROR. INITIALIZE ROUTE"); # Should be ERROR:, but the : character doesn't show in our MCDU font right now... + setprop("/MCDU[" ~ i ~ "]/scratchpad", "INSRT / ERASE TMPY FIRST"); + return; + } elsif (canvas_mcdu.myDirTo[i] == nil) { + canvas_mcdu.myDirTo[i] = dirTo.new(i); } + setprop("/MCDU[" ~ i ~ "]/page", "DIRTO"); } } } diff --git a/Nasal/MCDU/PERFAPPR.nas b/Nasal/MCDU/PERFAPPR.nas index 32799c96..06479715 100644 --- a/Nasal/MCDU/PERFAPPR.nas +++ b/Nasal/MCDU/PERFAPPR.nas @@ -82,7 +82,7 @@ var perfAPPRInput = func(key, i) { setprop("/FMGC/internal/vapp-speed-set", 0); setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0); mcdu.clearScratchpad(i); - } else if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 200) { + } else if (int(scratchpad) != nil and scratchpad >= 100 and scratchpad <= 350) { setprop("/FMGC/internal/vapp-speed-set", 1); setprop("/FMGC/internal/computed-speeds/vapp_appr", scratchpad); mcdu.clearScratchpad(i); diff --git a/Nasal/Panels/acp.nas b/Nasal/Panels/acp.nas index 4c04531e..58cb7e4d 100644 --- a/Nasal/Panels/acp.nas +++ b/Nasal/Panels/acp.nas @@ -7,32 +7,56 @@ # NOTE: This is just temporary until FG allows a full implementation of the audio system. -var vhf1_recive = props.globals.initNode("/controls/audio/acp[0]/vhf1-recive", 1, "BOOL"); -var vhf2_recive = props.globals.initNode("/controls/audio/acp[0]/vhf2-recive", 1, "BOOL"); +var vhf1_capt_recive = props.globals.initNode("/controls/audio/acp[0]/vhf1-recive", 1, "BOOL"); +var vhf2_capt_recive = props.globals.initNode("/controls/audio/acp[0]/vhf2-recive", 1, "BOOL"); +var vhf1_capt_volume = props.globals.initNode("/controls/audio/acp[0]/vhf1-volume", 1, "DOUBLE"); +var vhf2_capt_volume = props.globals.initNode("/controls/audio/acp[0]/vhf2-volume", 1, "DOUBLE"); -var vhf1_volume = props.globals.initNode("/controls/audio/acp[0]/vhf1-volume", 1, "DOUBLE"); -var vhf2_volume = props.globals.initNode("/controls/audio/acp[0]/vhf2-volume", 1, "DOUBLE"); +var vhf1_fo_recive = props.globals.initNode("/controls/audio/acp[1]/vhf1-recive", 1, "BOOL"); +var vhf2_fo_recive = props.globals.initNode("/controls/audio/acp[1]/vhf2-recive", 1, "BOOL"); +var vhf1_fo_volume = props.globals.initNode("/controls/audio/acp[1]/vhf1-volume", 1, "DOUBLE"); +var vhf2_fo_volume = props.globals.initNode("/controls/audio/acp[1]/vhf2-volume", 1, "DOUBLE"); var com1_volume = props.globals.getNode("instrumentation/comm[0]/volume"); var com2_volume = props.globals.getNode("instrumentation/comm[1]/volume"); var init = func() { - vhf1_recive.setValue(1); - vhf2_recive.setValue(1); - vhf1_volume.setValue(1); - vhf2_volume.setValue(0.8); + vhf1_capt_recive.setValue(1); + vhf2_capt_recive.setValue(1); + vhf1_capt_volume.setValue(1); + vhf2_capt_volume.setValue(0.8); + vhf1_fo_recive.setValue(1); + vhf2_fo_recive.setValue(1); + vhf1_fo_volume.setValue(0.8); + vhf2_fo_volume.setValue(1); } -var update_instruments = func(com_no) { - if (com_no == 0) { - if (vhf1_recive.getValue()) { - com1_volume.setValue(vhf1_volume.getValue()); +var update_com1 = func() { + if (getprop("systems/acconfig/options/fo-view") == 1) { + if (vhf1_fo_recive.getValue()) { + com1_volume.setValue(vhf1_fo_volume.getValue()); } else { com1_volume.setValue(0); } - } else if (com_no == 1) { - if (vhf2_recive.getValue()) { - com2_volume.setValue(vhf2_volume.getValue()); + } else { + if (vhf1_capt_recive.getValue()) { + com1_volume.setValue(vhf1_capt_volume.getValue()); + } else { + com1_volume.setValue(0); + } + } +} + +var update_com2 = func() { + if (getprop("systems/acconfig/options/fo-view") == 1) { + if (vhf2_fo_recive.getValue()) { + com2_volume.setValue(vhf2_fo_volume.getValue()); + } else { + com2_volume.setValue(0); + } + } else { + if (vhf2_capt_recive.getValue()) { + com2_volume.setValue(vhf2_capt_volume.getValue()); } else { com2_volume.setValue(0); } @@ -40,17 +64,39 @@ var update_instruments = func(com_no) { } setlistener("/controls/audio/acp[0]/vhf1-recive", func { - update_instruments(0); + update_com1(); }); setlistener("/controls/audio/acp[0]/vhf1-volume", func { - update_instruments(0); + update_com1(); }); setlistener("/controls/audio/acp[0]/vhf2-recive", func { - update_instruments(1); + update_com2(); }); setlistener("/controls/audio/acp[0]/vhf2-volume", func { - update_instruments(1); + update_com2(); }); + +setlistener("/controls/audio/acp[1]/vhf1-recive", func { + update_com1(); +}); + +setlistener("/controls/audio/acp[1]/vhf1-volume", func { + update_com1(); +}); + +setlistener("/controls/audio/acp[1]/vhf2-recive", func { + update_com2(); +}); + +setlistener("/controls/audio/acp[1]/vhf2-volume", func { + update_com2(); +}); + +setlistener("/systems/acconfig/options/fo-view", func { + update_com1(); + update_com2(); +}); + diff --git a/Nasal/Libraries/efis.nas b/Nasal/Panels/efis.nas similarity index 100% rename from Nasal/Libraries/efis.nas rename to Nasal/Panels/efis.nas