Library globals

Source environment.nas

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
##
## environment.nas
##
##  Nasal code for implementing environment-specific functionality.

##
# Handler.  Increase visibility by one step
#
var increaseVisibility = func {
	adjustVisibility(1.1);
}

##
# Handler.  Decrease visibility by one step
#
var decreaseVisibility = func {
	adjustVisibility(0.9);
}

var adjustVisibility = func( factor ) {
	var val = 0;
	var aux_val = 0;
    # better to use a non gui/dialog property here, but there doesn't
    # seem to be one for local-weather. 
	var localWeatherEnabled = getprop("sim/gui/dialogs/metar/mode/local-weather");
	var max_aux_vis = 12.429216196;
	var min_aux_vis = 9.90348;

    if (localWeatherEnabled) {
		if (factor == 1.1)
			factor = 1.001;
		else 
			factor = 0.999;

		aux_val = auxvisibilityProp.getValue() * factor;

		if( aux_val <= min_aux_vis)
			auxvisibilityProp.setDoubleValue(min_aux_vis);
		elsif(aux_val >= max_aux_vis)
			auxvisibilityProp.setDoubleValue(max_aux_vis);
		else
			auxvisibilityProp.setDoubleValue(aux_val);
 
		gui.popupTip(sprintf("Max Visibility: %.0f m", getprop("/local-weather/config/max-vis-range-m")));
	} else {
		val = visibilityProp.getValue() * factor;

		if( val < 1.0 ) val = getprop("/environment/visibility-m");

		if( val > 30 ) {
			visibilityProp.setDoubleValue(val);
			visibilityOverrideProp.setBoolValue(1);
			}

		gui.popupTip(sprintf("Visibility: %.0f m", val));
	}
}

##
# Handler.  Reset visibility to default.
#
var resetVisibility = func {
    visibilityProp.setDoubleValue(0);
    visibilityOverrideProp.setBoolValue(0);
}

var visibilityProp = props.globals.initNode("/environment/config/presets/visibility-m", 0, "DOUBLE" );
var visibilityOverrideProp = props.globals.initNode("/environment/config/presets/visibility-m-override", 0, "BOOL" );
var auxvisibilityProp = props.globals.initNode("/local-weather/config/aux-max-vis-range-m", 0, "DOUBLE" );