GlobalWeather: (better) support for weather-scenario
- handle /environment/weather-scenario property on startup - try to detect predefined scenario on startup of global weather dialog box and select the corresponding entry in the scenario combo box.
This commit is contained in:
parent
44a4f82481
commit
cdb21a52e4
2 changed files with 44 additions and 1 deletions
27
Nasal/weather_scenario.nas
Normal file
27
Nasal/weather_scenario.nas
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Set the global weather according to the defined
|
||||||
|
# scenario in /environment/weather-scenario
|
||||||
|
#
|
||||||
|
var initialize_weather_scenario = func {
|
||||||
|
getprop( "/environment/params/metar-updates-environment", 0 ) == 0 and return;
|
||||||
|
getprop( "/environment/realwx/enabled", 0 ) and return;
|
||||||
|
getprop( "/environment/metar/data", "" ) != "" and return;
|
||||||
|
|
||||||
|
# preset configured scenario
|
||||||
|
var scn = getprop("/environment/weather-scenario", "");
|
||||||
|
var wsn = props.globals.getNode( "/environment/weather-scenarios" );
|
||||||
|
if( wsn != nil ) {
|
||||||
|
var scenarios = wsn.getChildren("scenario");
|
||||||
|
forindex (var i; scenarios ) {
|
||||||
|
if( scenarios[i].getNode("name").getValue() == scn ) {
|
||||||
|
setprop("/environment/metar/data", scenarios[i].getNode("metar").getValue() );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_setlistener("/sim/signals/nasal-dir-initialized", func {
|
||||||
|
initialize_weather_scenario();
|
||||||
|
delete(globals, "weather_scenario");
|
||||||
|
});
|
||||||
|
|
|
@ -1599,7 +1599,23 @@
|
||||||
} else if( getprop( "environment/realwx/enabled" ) ) {
|
} else if( getprop( "environment/realwx/enabled" ) ) {
|
||||||
setprop( me.base ~ "/source-selection", "Live data" );
|
setprop( me.base ~ "/source-selection", "Live data" );
|
||||||
} else {
|
} else {
|
||||||
setprop( me.base ~ "/source-selection", "Manual input" );
|
# preset configured scenario
|
||||||
|
var wsn = props.globals.getNode( "/environment/weather-scenarios" );
|
||||||
|
var found = 0;
|
||||||
|
if( wsn != nil ) {
|
||||||
|
var scenarios = wsn.getChildren("scenario");
|
||||||
|
forindex (var i; scenarios ) {
|
||||||
|
var metarN = scenarios[i].getNode("metar");
|
||||||
|
metarN == nil and continue;
|
||||||
|
if( metarN.getValue() == getprop("/environment/metar/data","") ) {
|
||||||
|
setprop( me.base ~ "/source-selection", scenarios[i].getNode("name").getValue() );
|
||||||
|
found = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( found == 0 )
|
||||||
|
setprop( me.base ~ "/source-selection", "Manual input" );
|
||||||
}
|
}
|
||||||
setprop( me.base ~ "/metar", normalize_string(getprop("environment/metar/data")) );
|
setprop( me.base ~ "/metar", normalize_string(getprop("environment/metar/data")) );
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue