Source weather_scenario.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
#
# find a weather scenario by it's <name> element
# returns /environment/weather-scenarios/scenario[name=$name]
#
find_weather_scenario = func(name) {
var wsn = props.globals.getNode( "/environment/weather-scenarios" );
if( wsn == nil ) return nil;
var scenarios =
foreach (var scenario; wsn.getChildren("scenario") )
if( scenario.getNode("name").getValue() == name )
return scenario;
return nil;
}
var initialize_weather_scenario = func {
getprop( "/environment/params/metar-updates-environment" ) == 0 and return;
getprop( "/environment/realwx/enabled" ) 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;
}
}
}
};
initialize_weather_scenario();
setlistener("/environment/weather-scenario", func(n) {
var scenario = find_weather_scenario( n.getValue() );
if( scenario == nil ) return;
var scenarioName = scenario.getNode("name",1).getValue();
if( scenarioName == "Disabled" ) {
setprop( "/environment/params/metar-updates-environment", 0 );
setprop( "/environment/realwx/enabled", 0 );
setprop( "/environment/config/enabled", 0 );
} else if( scenarioName == "Live data" ) {
setprop( "/environment/params/metar-updates-environment", 1 );
setprop( "/environment/realwx/enabled", 1 );
setprop( "/environment/config/enabled", 1 );
} else if( scenarioName == "Manual input" ) {
setprop( "/environment/params/metar-updates-environment", 1 );
setprop( "/environment/realwx/enabled", 0 );
setprop( "/environment/config/enabled", 1 );
} else {
setprop( "/environment/params/metar-updates-environment", 1 );
setprop( "/environment/realwx/enabled", 0 );
setprop( "/environment/config/enabled", 1 );
var metar = scenario.getNode("metar",1).getValue();
setprop( "environment/metar/data", metar );
}
});