Library globals

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 );
    }
});