remove README.Protocol and add a README that refers to the "real"
[fg:toms-fgdata.git] / Nasal / atc-chatter.nas
1 #############################################################################
2 #
3 # Simple sequenced ATC background chatter function
4 #
5 # Written by Curtis Olson
6 # Started 8 Jan 2006.
7 #
8 #############################################################################
9
10 #############################################################################
11 # Global shared variables
12 #############################################################################
13
14 fg_root = "";
15 chatter = "UK";
16 chatter_dir = "";
17
18 chatter_min_interval = 20.0;
19 chatter_max_interval = 40.0;
20
21 chatter_index = 0;
22 chatter_size = 0;
23 chatter_list = 0;
24
25
26 #############################################################################
27 # Use tha nasal timer to call the initialization function once the sim is
28 # up and running
29 #############################################################################
30
31 CHATTER_INIT = func {
32     # default values
33     fg_root = getprop("/sim/fg-root");
34     chatter_dir = sprintf("%s/ATC/Chatter/%s", fg_root, chatter);
35     chatter_list = directory( chatter_dir );
36     chatter_size = size(chatter_list);
37     # seed the random number generator (with time) so we don't start in
38     # same place in the sequence each run.
39     srand();
40     chatter_index = int( chatter_size * rand() );
41 }
42 settimer(CHATTER_INIT, 0);
43
44
45 #############################################################################
46 # main update function to be called each frame
47 #############################################################################
48
49 chatter_update = func {
50     if ( chatter_index >= chatter_size ) {
51         chatter_index = 0;
52     }
53
54     if ( substr(chatter_list[chatter_index],
55                 size(chatter_list[chatter_index]) - 4) == ".wav" )
56     {   
57         var vol =getprop("/sim/sound/atc-chatter-volume");
58         if(vol == nil){vol = 0.5;}
59         tmpl = { path : chatter_dir, file : chatter_list[chatter_index] , volume : vol};
60         if ( getprop("/sim/sound/atc-chatter") ) {
61             # go through the motions, but only schedule the message to play
62             # if atc-chatter is enabled.
63             printlog("info", "update atc chatter ", chatter_list[chatter_index] );
64             fgcommand("play-audio-sample", props.Node.new(tmpl) );
65         }
66     } else {
67         # skip non-wav file found in directory
68     }
69
70     chatter_index = chatter_index + 1;
71     nextChatter();
72 }
73
74
75 #############################################################################
76 # Use tha nasal timer to update every 10 seconds
77 #############################################################################
78
79 nextChatter = func {
80     # schedule next message in next min-max interval seconds so we have a bit
81     # of a random pacing
82     next_interval = chatter_min_interval
83        + int(rand() * (chatter_max_interval - chatter_min_interval));
84     # printlog("info", "next chatter in ", next_interval, " seconds");
85     settimer(chatter_update, next_interval );
86 }
87 nextChatter();