1
0
Fork 0

better hi/lo ref transition, props changed

This commit is contained in:
Inuyaksa 2021-02-19 00:17:21 +01:00
parent a3d1bb8b50
commit 2864667ef8
2 changed files with 38 additions and 22 deletions

View file

@ -7,13 +7,16 @@ DotSym.makeinstance( name, __self__ );
var element_type = "group";
var terrain_minalt = props.globals.initNode("/custom/terrain/min-altitude", 0,"INT");
var terrain_maxalt = props.globals.initNode("/custom/terrain/max-altitude", -9999,"INT");
var terrain_minalt = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/min-altitude", 0,"INT");
var terrain_maxalt = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/max-altitude", -9999,"INT");
var terrain_alert = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/alert", 0,"INT");
var tile_list = [
nil,"tile_gl.png","tile_gh.png","tile_yl.png","tile_yh.png","tile_rh.png", # 0-5 low alt
"tile_gl.png","tile_gh.png","tile_gs.png",nil, # 6-8 hi alt
"tile_ml.png","tile_cl.png" # 10 magenta - 11 cyan (water)
"tile_ml.png","tile_cl.png", # 10 magenta - 11 cyan (water)
"tile_ys.png","tile_rs.png" # 12-13 alert
];
var is_terrain = 0;
@ -53,6 +56,7 @@ var updateTerrain = func {
var altitudeft = me.refaltitudeft;
var lowaltft = me.reflowaltft;
var basealtft = me.basealtitudeft;
var alert_level = me.terrain_alert.getValue();
var side = (math.mod(me.radar_beacon,2)==0) ? "L" : "R";
var a = int(me.radar_beacon/2);
@ -98,6 +102,10 @@ var updateTerrain = func {
if (diff>=0) {
grad = int(diff/1000) + 3;
if (grad>5) grad = 5;
if (alert_level > 0 and a < 6 and grad > 3) {
if (alert_level == 1 and (grad == 3 or grad == 4)) grad = 12; # solid yellow
else if (alert_level == 2 and grad == 5) grad = 13; # solid red
}
} else {
if (me.hialtmode == 0) {
if (diff>=lowaltft) grad = 3; # lite yellow
@ -135,7 +143,6 @@ var updateTerrain = func {
me.radar_beacon += 1;
if (me.radar_beacon >= (me.tileradiusw*2)) {
me.update_altitudes();
me.restart_beacon();
}
@ -143,25 +150,28 @@ var updateTerrain = func {
};
var update_altitudes = func {
me.terrain_minalt.setValue(me.min_altitude);
me.terrain_maxalt.setValue(me.max_altitude);
if (me.onground == 0 and (me.max_altitude + 1000) < me.refaltitudeft) { # 1000 ft tollerance
if (me.onground == 0 and (me.max_altitude + 250) < me.refaltitudeft) { # 250 ft tollerance
me.hialtmode = 1;
me.bands_range = (me.max_altitude - me.min_altitude) / 4;
me.bands_minalt = int(me.min_altitude + me.bands_range);
me.bands_range = math.min(2000,(me.max_altitude - math.max(me.min_altitude,me.basealtitudeft))) / 5;
var maxrange = math.min(2000,me.max_altitude - (me.bands_range * 3));
me.bands_minalt = int(me.max_altitude - maxrange);
me.bands_maxalt = me.max_altitude;
} else {
me.hialtmode = 0;
}
me.min_altitude = 9999;
me.max_altitude = -9999;
}
var restart_beacon = func {
me.radar_beacon = 0;
me.radar_cycle += 1;
me.min_altitude = 9999;
me.max_altitude = -9999;
me.reference = nil;
};
@ -275,15 +285,16 @@ var draw = func {
me.refaltitudeft = refalt;
me.reflowaltft = (pts.Gear.position[1].getValue()) ? -250 : -500;
me.onground = getprop("/gear/gear[0]/wow");
if (me.min_altitude != 9999) me.update_altitudes();
if (me.basealtitudeft == nil and fmgc.FMGCInternal.phase<2) {
#var basealtft = me.get_elevation(ref.lat,ref.lon);
me.basealtitudeft = refalt + 400;
me.checkarrival = 1;
}
if (fmgc.FMGCInternal.phase == 2 and me.basealtitudeft > 0 and refalt > me.basealtitudeft) {
me.basealtitudeft = 0;
if (fmgc.FMGCInternal.phase == 2) {
me.basealtitudeft = math.min(me.basealtitudeft,400+me.terrain_minalt.getValue());
}
if (fmgc.FMGCInternal.phase == 5 and me.checkarrival == 1) {
@ -293,20 +304,18 @@ var draw = func {
var airport = airportinfo(fmgc.FMGCInternal.arrApt);
if (airport != nil) me.basealtitudeft = 400 + (airport.elevation * M2FT);
}
if (me.basealtft == nil) {
var elev = get_elevation(ref.lat,ref.lon);
if (elev != nil) me.basealtitudeft = 400 + elev;
else me.basealtitudeft = 400; # no hope
if (me.basealtitudeft == nil) {
me.basealtitudeft = 400 + me.terrain_minalt.getValue(); # that's fun
}
}
if (fmgc.FMGCInternal.phase == 6 and me.checkarrival == 0) {
me.checkarrival == 1;
me.basealtft = 0;
#me.basealtitudeft = 0;
}
if (fmgc.FMGCInternal.phase == 7 and me.basealtft == 0) {
me.checkarrival == 1;
if (fmgc.FMGCInternal.phase == 7 and me.checkarrival == 0) {
me.checkarrival == 1;
me.basealtitudeft = refalt + 400;
}
@ -324,9 +333,16 @@ var draw = func {
}
me.updateTerrain(); # left
#if (math.mod(me.radar_beacon,2)==1)
me.updateTerrain(); # right
}
};
setlistener("/instrumentation/mk-viii/outputs/discretes/gpws-warning", func { #warning - TERRAIN red - solid red
me.terrain_alert.setValue( (getprop("/instrumentation/mk-viii/outputs/discretes/gpws-warning") ) ? 2 : 0 );
});
setlistener("/instrumentation/mk-viii/outputs/discretes/gpws-alert", func { #caution - TERRAIN amber - solid yellow
me.terrain_alert.setValue( (getprop("/instrumentation/mk-viii/outputs/discretes/gpws-alert") ) ? 1 : 0 );
});

View file

@ -12,8 +12,8 @@ var adirs_3 = props.globals.getNode("/instrumentation/efis[0]/nd/ir-3", 1);
var vhdg_bug = props.globals.getNode("/it-autoflight/input/hdg",0); # ND compass position deg
var terrain_minalt = props.globals.getNode("/custom/terrain/min-altitude", 0);
var terrain_maxalt = props.globals.getNode("/custom/terrain/max-altitude", -9999);
var terrain_minalt = props.globals.getNode("/instrumentation/efis[0]/nd/terrain-on-nd/min-altitude", 0);
var terrain_maxalt = props.globals.getNode("/instrumentation/efis[0]/nd/terrain-on-nd/max-altitude", -9999);
canvas.NDStyles["Airbus"] = {
font_mapper: func(family, weight) {