diff --git a/AircraftConfig/simbrief.xml b/AircraftConfig/simbrief.xml
index 28fe1398..b7fd94fd 100644
--- a/AircraftConfig/simbrief.xml
+++ b/AircraftConfig/simbrief.xml
@@ -49,7 +49,11 @@
left
-
+
+
+
+ left
+
hbox
diff --git a/Nasal/FMGC/SimbriefParser.nas b/Nasal/FMGC/SimbriefParser.nas
index 731b03cf..cabc34f2 100644
--- a/Nasal/FMGC/SimbriefParser.nas
+++ b/Nasal/FMGC/SimbriefParser.nas
@@ -50,6 +50,13 @@ var SimbriefParser = {
fmgc.FMGCInternal.crzTemp = (((me.store1.getChild("initial_altitude").getValue() / 1000) * -2) + 15) + me.store1.getChild("avg_temp_dev").getValue();
fmgc.FMGCInternal.crzTempSet = 1;
fmgc.FMGCInternal.crzProg = me.store1.getChild("initial_altitude").getValue() / 100;
+ if (me.store1.getChild("avg_wind_comp").getValue() >= 0) {
+ setprop("/FMGC/internal/trip-wind", "TL" ~ me.store1.getChild("avg_wind_comp").getValue());
+ setprop("/FMGC/internal/trip-wind-value", me.store1.getChild("avg_wind_comp").getValue());
+ } else {
+ setprop("/FMGC/internal/trip-wind", "HD" ~ me.store1.getChild("avg_wind_comp").getValue());
+ setprop("/FMGC/internal/trip-wind-value", me.store1.getChild("avg_wind_comp").getValue());
+ }
fmgc.FMGCInternal.altAirport = me.store2.getChild("icao_code").getValue();
fmgc.FMGCInternal.altAirportSet = 1;
@@ -70,16 +77,85 @@ var SimbriefParser = {
fmgc.FMGCInternal.altSelected = 0;
fmgc.updateArptLatLon();
fmgc.updateARPT();
+ call(func() {
+ fmgc.flightPlanController.flightplans[3].departure_runway = airportinfo(fmgc.FMGCInternal.depApt).runways[me.store1.getChild("plan_rwy").getValue()];
+ fmgc.flightPlanController.flightplans[3].destination_runway = airportinfo(fmgc.FMGCInternal.arrApt).runways[me.store2.getChild("plan_rwy").getValue()];
+ });
+ me.store1 = me.OFP.getChild("navlog").getChildren();
+ var firstIsSID = 0;
+ var SIDID = "";
+ if (me.store1[0].getChild("is_sid_star").getValue() == 1) {
+ if (fmgc.flightPlanController.flightplans[3].departure.getSid(me.store1[0].getChild("via_airway").getValue()) != nil) {
+ firstIsSID = 1;
+ SIDID = me.store1[0].getChild("via_airway").getValue();
+ }
+ }
+ var lastIsSTAR = 0;
+ var STARID = "";
+ if (me.store1[-1].getChild("is_sid_star").getValue() == 1) {
+ if (fmgc.flightPlanController.flightplans[3].destination.getStar(me.store1[-1].getChild("via_airway").getValue()) != nil) {
+ lastIsSTAR = 1;
+ STARID = me.store1[-1].getChild("via_airway").getValue();
+ }
+ }
+ var lastSIDIndex = -999;
+ var firstSTARIndex = -999;
+ var TOCinSIDflag = 0;
+ var TODinSTARflag = 0;
+ for (var i = 0; i < size(me.store1); i = i + 1) {
+ if (firstIsSID) {
+ if (me.store1[i].getChild("is_sid_star").getValue() == 0 or me.store1[i].getChild("via_airway").getValue() != SIDID) {
+ lastSIDIndex = i - 1;
+ break;
+ }
+ }
+ }
+
+ for (var i = lastSIDIndex == -999 ? 0 : lastSIDIndex; i < size(me.store1); i = i + 1) {
+ if (STARID != "") {
+ if (me.store1[i].getChild("is_sid_star").getValue() == 1 and me.store1[i].getChild("via_airway").getValue() == STARID) {
+ firstSTARIndex = i;
+ break;
+ }
+ }
+ }
+
+ var max = firstSTARIndex == -999 ? size(me.store1) - 1 : firstSTARIndex - 1;
+ for (var i = lastSIDIndex == -999 ? 0 : lastSIDIndex + 2; i < max; i = i + 1) {
+ if (me.store1[i].getChild("ident").getValue() == "TOC" or me.store1[i].getChild("ident").getValue() == "TOD") { continue; }
+ var coord = geo.Coord.new();
+ coord.set_latlon(me.store1[i].getChild("pos_lat").getValue(), me.store1[i].getChild("pos_long").getValue());
+ var WP = createWP(coord, me.store1[i].getChild("ident").getValue());
+ fmgc.flightPlanController.flightplans[3].appendWP(WP);
+ }
+ fmgc.flightPlanController.flightplans[3].sid = fmgc.flightPlanController.flightplans[3].departure.getSid(SIDID);
+ fmgc.flightPlanController.flightplans[3].star = fmgc.flightPlanController.flightplans[3].destination.getStar(STARID);
fmgc.flightPlanController.destroyTemporaryFlightPlan(3, 1);
fmgc.windController.updatePlans();
fmgc.updateRouteManagerAlt();
- if (getprop("/FMGC/internal/block-confirmed")) {
- setprop("/FMGC/internal/fuel-calculating", 0);
- setprop("/FMGC/internal/fuel-calculating", 1);
+
+
+ # INITB
+ me.store1 = me.OFP.getChild("fuel");
+ setprop("/FMGC/internal/taxi-fuel", me.store1.getChild("taxi").getValue() / 1000);
+ setprop("/FMGC/internal/taxi-fuel-set", 1);
+ setprop("/FMGC/internal/alt-fuel", me.store1.getChild("alternate_burn").getValue() / 1000);
+ setprop("/FMGC/internal/alt-fuel-set", 1);
+ setprop("/FMGC/internal/final-fuel", me.store1.getChild("reserve").getValue() / 1000);
+ setprop("/FMGC/internal/final-fuel-set", 1);
+ setprop("/FMGC/internal/rte-rsv", me.store1.getChild("contingency").getValue() / 1000);
+ setprop("/FMGC/internal/rte-rsv-set", 1);
+ if ((me.store1.getChild("contingency").getValue() / 1000) / num(getprop("/FMGC/internal/trip-fuel")) * 100 <= 15.0) {
+ setprop("/FMGC/internal/rte-percent", (me.store1.getChild("contingency").getValue() / 1000) / num(getprop("/FMGC/internal/trip-fuel")) * 100);
+ } else {
+ setprop("/FMGC/internal/rte-percent", 15.0); # need reasearch on this value
}
+ setprop("/FMGC/internal/block", me.store1.getChild("plan_ramp").getValue() / 1000);
+ setprop("/FMGC/internal/block-set", 1);
+ setprop("/FMGC/internal/block-calculating", 0);
},
};
\ No newline at end of file
diff --git a/Nasal/FMGC/flightplan.nas b/Nasal/FMGC/flightplan.nas
index 4915fff8..e4018ba7 100644
--- a/Nasal/FMGC/flightplan.nas
+++ b/Nasal/FMGC/flightplan.nas
@@ -819,7 +819,7 @@ var flightPlanController = {
if (me.flightplans[2].getWP(me.arrivalIndex[2]) == nil or me.flightplans[2].getWP(1) == nil) {
me.arrivalDist = 9999;
- print(me.arrivalIndex[2]);
+ #print(me.arrivalIndex[2]);
} else {
me.arrivalDist = me.flightplans[2].getWP(me.arrivalIndex[2]).distance_along_route - me.flightplans[2].getWP(1).leg_distance + me._arrivalDist;
}